我有以下 SQL 可用于查找重复项
SELECT *
FROM (SELECT
id,
ShipAddress,
ShipZIPPostal,
ROW_NUMBER() OVER (PARTITION BY shipaddress, shipzippostal ORDER BY shipaddress) ROWNUM
FROM orders
WHERE CONVERT(date, orderdate) = CONVERT(date, GETDATE())) x
WHERE rownum > 1
我只想看到行,如果 Rownum 的值 > 1,那么我想看到它对应的行,其中 rownum = 1。
所以基本上,如果一行有重复项,我想查看原始行及其所有重复项。
如果一行没有重复,那么我不想看到它(它会有 rownum = 1 )
请问我该怎么做?
干杯
最佳答案
使用 count(*)
而不是 row_number()
:
SELECT *
FROM (SELECT id, ShipAddress, ShipZIPPostal,
COUNT(*) OVER (PARTITION BY shipaddress, shipzippostal) as cnt
FROM orders
WHERE CONVERT(date, orderdate) = CONVERT(date, GETDATE())
) x
WHERE cnt > 1;
关于SQL Server 2008 - 使用 ROW_NUMBER 查找重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34134302/