嘗試下面的查詢,這會給你所需的確切輸出
DECLARE @TEST_TABLE TABLE(SNO INT,COL_TIME DATETIME)
INSERT INTO @TEST_TABLE VALUES
(1,'2017-03-21 00:00:00.610'),
(2,'2017-03-21 08:00:00.467'),
(3,'2017-03-21 10:00:00.770'),
(4,'2017-03-21 13:00:00.537'),
(5,'2017-03-21 16:00:00.603'),
(6,'2017-03-21 20:00:00.110'),
(7,'2017-03-22 00:00:00.593'),
(8,'2017-03-22 10:00:00.620'),
(9,'2017-03-22 10:00:00.620')
;WITH TABLE_DATA
AS
(SELECT *,(SELECT COL_TIME FROM @TEST_TABLE T2
WHERE T2.SNO=T1.SNO+1)LAST_COL1,
ISNULL((SELECT CASE WHEN CONVERT(VARCHAR,T3.COL_TIME,101)=CONVERT(VARCHAR,T1.COL_TIME,101)
THEN 1 ELSE 0 END FROM @TEST_TABLE T3 WHERE T3.SNO=T1.SNO- 1),1)LAST_COL FROM @TEST_TABLE T1)
,TEST_TABLE1
AS
( SELECT SNO,COL_TIME,LAST_COL,LAST_COL NUM FROM TABLE_DATA WHERE SNO=1
UNION ALL
SELECT TT2.SNO,TT2.COL_TIME,TT2.LAST_COL,CASE WHEN TT2.LAST_COL=0 THEN 1 ELSE NUM+TT2.LAST_COL END FROM TEST_TABLE1 TT1 JOIN TABLE_DATA TT2
ON TT1.SNO=TT2.SNO-1
WHERE NUM<=100
) SELECT COL_TIME [DateTime],NUM [Order] FROM TEST_TABLE1
輸出
-------------------------------------
--DateTime Order
-------------------------------------
2017-03-21 00:00:00.610 1
2017-03-21 08:00:00.467 2
2017-03-21 10:00:00.770 3
2017-03-21 13:00:00.537 4
2017-03-21 16:00:00.603 5
2017-03-21 20:00:00.110 6
2017-03-22 00:00:00.593 1
2017-03-22 10:00:00.620 2
2017-03-22 10:00:00.620 3
-------------------------------------
添加一些所需的輸出 – 2017-03-22 12:43:13
'CASE'將顯示第一個輸出,然後停止。爲什麼它應該繼續,如果它已經遇到了'真'的CASE? – waka
沒有意義這樣做。你能告訴確切的要求是什麼嗎? – Sid