我要取重複記錄 如果重複記錄之間的時間差是超過96小時或4天,否則忽略重複條目,並返回記錄與第一個入口或最早的日期。我的表是這樣的:如何返回重複的行,如果日期差等於或超過4天或96小時
ID SDATE
----------- -----------------------
1 2016-04-13 14:54:18.983
1 2016-04-08 12:55:47.907
2 2016-04-13 14:54:18.983
3 2016-04-13 14:54:18.983
4 2016-04-13 14:54:18.983
5 2016-04-13 14:54:18.983
5 2016-04-11 12:55:47.907
6 2016-04-13 14:54:18.983
6 2016-04-13 14:54:18.983
預期結果:
ID SDATE
----------- -----------------------
1 2016-04-13 14:54:18.983
1 2016-04-08 12:55:47.907
2 2016-04-13 14:54:18.983
3 2016-04-13 14:54:18.983
4 2016-04-13 14:54:18.983
5 2016-04-11 12:55:47.907
6 2016-04-13 14:54:18.983
我嘗試下面的查詢,但它無法正常工作。
WITH tt AS (
SELECT 1 as ID, GETDATE() as SDATE
UNION ALL
SELECT 1 as ID, '2016-04-09 12:55:47.907' as SDATE
UNION ALL
SELECT 2 as ID, GETDATE() as SDATE
UNION ALL
SELECT 3 as ID, GETDATE() as SDATE
UNION ALL
SELECT 4 as ID, GETDATE() as SDATE
UNION ALL
SELECT 5 as ID, GETDATE() as SDATE
UNION ALL
SELECT 5 as ID, '2016-04-11 12:55:47.907' as SDATE
UNION ALL
SELECT 6 as ID, GETDATE() as SDATE
UNION ALL
SELECT 6 as ID, GETDATE() as SDATE
)
SELECT MIN(SDATE) as SDATE, ID FROM tt as tbl
GROUP BY ID, DATEADD(HH, DATEDIFF(HH,0,SDATE) + 96,0)
應該發生什麼,如果一個'id'有以下三個記錄? '{'2016-04-01 06:00:00.000','2016-04-03 18:00:00.000','2016-04-06 06:00:00.000'}'?每個記錄相距不到4天,但第一個和最後一個記錄相隔5天。 – MatBailie
如果有3次重複的ID,第一日期,會發生什麼 - '1/4/2016',第二日期 - '3/4/2016'和第三日期'4分之6/ 2016',由你的定義,第二是一個重複的第一個和第三個是第二個副本。應該刪除哪個? – sagi
@MatBailie哈,同樣的問題,相同的日期。 – sagi