【发布时间】:2014-01-29 03:28:57
【问题描述】:
我正在尝试在单个表中查找重复项,其中至少有一个重复项是在最后一天创建的。
这是我的查询:
SELECT DateOfBirth DOB,
FirstName FirstName,
LastName LastName,
COUNT(*) TotalCount
FROM TABLE
WHERE DateOfBirth IS NOT NULL
AND DATEDIFF(d,dateCreated,getDate()) <= 1
GROUP BY DateofBirth, FirstName, LastName
HAVING COUNT(*) > 1
ORDER BY COUNT(*) DESC
问题是这个查询没有返回任何内容,因为这两个副本都需要在最后一天创建(读取方式)。
我做了一些测试,发现这个 datediff 要求 dateCreated 列都在 datediff 内。
有什么方法可以把这些重复的最近的重复在最后一天创建的地方带回来?即使最旧的副本是在一年前创建的?
【问题讨论】:
-
and datecreated >= dateadd(d,-1,getdate())
-
不幸的是,@drewlander,这也是同样的事情。它要求两条记录都在最后一天内创建。
-
也许分区上的行号会起作用。我会一起检查 row_number 是否为 1,然后在派生表中包含相同的逻辑。
-
您需要同时查看它们,还是只查看新的副本就足够了?
标签: sql sql-server