答案 0 :(得分:0)
您的问题有很多解决方案。一种是使用row_number。
请注意,我已经在OVER子句中由DENUNCIID订购了。这定义了"最后记录"作为具有最大DENUNCIID的那个。如果您想以不同方式定义它,则需要更改正在订购的字段。
with dupes as (
SELECT
ROW_NUMBER() OVER (Partition by NRODENUNCIA ORDER BY DENUNCIID DESC) RN,
*
FROM
YourTable
)
SELECT * FROM dupes where rn = 1
这只是每个骗局的最后一条记录。
如果您只想包含具有欺骗的记录,则将where子句更改为
WHERE rn =1
and NRODENUNCIA in (select NRODENUNCIA from dupes where rn > 1)
答案 1 :(得分:0)
您可以使用MAX(DENUNCIAID)
和GROUP BY... HAVING
查找重复项,然后选择DENUNCIAID
行最大的行:
SELECT MAX(DENUNCIAID), NRODENUNCIA, FECHAEMISION, ADUANA, MES, NOMBREESTADO
FROM YourTable
GROUP BY NRODENUNCIA, FECHAEMISION, ADUANA, MES, NOMBREESTADO
HAVING COUNT(1) > 1
这只会显示至少有一个副本的行。如果您还想查看非重复行,只需删除HAVING COUNT(1) > 1