我要取重复记录 如果重复记录之间的时间差是超过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