CREATE TABLE #TempTable
(
ROWID int identity(1,1) primary key,
Fuck_Row int,
Fuck_Update int
)
--create some testing data
INSERT INTO #TempTable VALUES(1, 0)
INSERT INTO #TempTable VALUES(2, 0)
INSERT INTO #TempTable VALUES(4, 0)
INSERT INTO #TempTable VALUES(6, 0)
INSERT INTO #TempTable VALUES(8, 0)
DECLARE @MAXID INT, @Counter INT
SET @COUNTER = 1
SELECT @MAXID = COUNT(*) FROM #TempTable
WHILE (@COUNTER <= @MAXID)
BEGIN
--DO THE PROCESSING HERE
SELECT Fuck_Row = PT.Fuck_Row
FROM #TempTable AS PT
WHERE ROWID = @COUNTER
UPDATE #TempTable Set Fuck_Update = @Counter
WHERE ROWID = @Counter
SET @COUNTER = @COUNTER + 1
END
Select * from #TempTable
IF (OBJECT_ID('tempdb..#TempTable') IS NOT NULL)
BEGIN
DROP TABLE #TempTable
END
Date :
2019-07-15 19:52:05
By :
xxx
No. 4
Guest
พอดีเจอของเก่าเก็บเอาไว้อ้างอิง เลยยกมาให้ดู
Code (SQL)
CREATE TABLE #CountMe (Col1 char(1), Col2 date);
INSERT INTO #CountMe VALUES ('A', '2019-12-01');
INSERT INTO #CountMe VALUES ('B', '2019-12-01');
INSERT INTO #CountMe VALUES ('A', '2019-12-02');
INSERT INTO #CountMe VALUES ('B', '2019-12-02');
INSERT INTO #CountMe VALUES ('B', '2019-12-02');
INSERT INTO #CountMe VALUES ('A', '2019-12-03');
INSERT INTO #CountMe VALUES ('B', '2019-12-03');
INSERT INTO #CountMe VALUES ('A', '2019-12-03');
SELECT
COUNT(CASE WHEN Col1 = 'A' THEN 1 END) AS CountWithoutElse,
COUNT(CASE WHEN Col1 = 'A' THEN 1 ELSE NULL END) AS CountWithElseNull,
COUNT(CASE WHEN Col1 = 'A' THEN 1 ELSE 0 END) AS CountWithElseZero,
'...' As Otherwise,
Col2 As AtDate,
ROW_NUMBER() OVER (ORDER BY (SELECT 0)) As ListNo
FROM #CountMe
WHERE 1 = 1
GROUP BY Col2
;DROP TABLE #CountMe
create table tbRecall
(recalldate date,recallstatus nvarchar (20),userid nvarchar (20))
insert into tbRecall values (getdate(),'รับสาย','5001')
insert into tbRecall values (getdate(),'ไม่รับสาย','5001')
insert into tbRecall values (getdate(),'ฝากข้อความ','5001')
insert into tbRecall values (getdate(),'ยกเลิกหมายเลข','5001')
insert into tbRecall values (getdate(),'รับสาย','5001')
insert into tbRecall values (getdate(),'ฝากข้อความ','5001')
with cte_recall
as (
select userid,
case
when recallstatus = 'รับสาย' then '1' end as test1
,case
when recallstatus = 'ไม่รับสาย' then '1' end as test2
,case
when recallstatus = 'ฝากข้อความ' then '1' end as test3
,case
when recallstatus = 'ยกเลิกหมายเลข' then '1' end as test4
,recalldate
from tbRecall)
select userid, count(test1) as รับสาย
, count(test2) ไม่รับสาย
, count(test3) ฝากข้อความ
, count(test4) ยกเลิกหมายเลข
,recalldate
from cte_recall group by userid,recalldate
select dt.userid, dt.recalldate,
sum(case when st.id=1 then 1 else 0 end) t1,
sum(case when st.id=2 then 1 else 0 end) t2,
sum(case when st.id=3 then 1 else 0 end) t3,
sum(case when st.id=4 then 1 else 0 end) t4
from(
## ตัวอย่างตาราง
select getdate() recalldate, N'รับสาย' recallstatus, 1 userid
union all select getdate(), N'ไม่รับสาย', 1
union all select getdate(), N'ฝากข้อความ', 1
union all select getdate(), N'ยกเลิกหมายเลข', 1
union all select getdate(), N'รับสาย', 1
union all select getdate(), N'ฝากข้อความ', 1
) as dt
left join (
## ตาราง status_name นี้สร้างไว้ใช้งานก็ดีนะ เวลาอ้างอิงต่อไป จะได้ไม่ต้องเขียนยาวมาก
select 1 id, N'รับสาย' nm
union select 2, N'ไม่รับสาย'
union select 3, N'ฝากข้อความ'
union select 4, N'ยกเลิกหมายเลข'
) as st on st.nm = dt.recallstatus
group by dt.userid, dt.recalldate