Sql 选择最后一个id不同的重复行Oracle 11g
我有一张这样的桌子:Sql 选择最后一个id不同的重复行Oracle 11g,sql,oracle11g,Sql,Oracle11g,我有一张这样的桌子: 问题是我需要在“nrodenucia”列中获取最后一条记录,其中包含重复项 您的问题有很多解决方案。一种是使用行号 注意,我在OVER子句中已按DENANCUID命令。这将“最后一条记录”定义为具有最大Denucid的记录。如果要以不同的方式定义它,则需要更改正在排序的字段 with dupes as ( SELECT ROW_NUMBER() OVER (Partition by NRODENUNCIA ORDER BY DENUNCIID DESC
问题是我需要在“nrodenucia”列中获取最后一条记录,其中包含重复项 您的问题有很多解决方案。一种是使用行号 注意,我在OVER子句中已按DENANCUID命令。这将“最后一条记录”定义为具有最大Denucid的记录。如果要以不同的方式定义它,则需要更改正在排序的字段
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)
您可以使用MAX(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
表实际上没有顺序,因此您需要定义“last”的含义。另外,你没有说你想要“最后一个”重复的记录,或者你想要每个重复的“最后一个”记录。确切地说,我需要每个重复的最后一个记录。我的英语不是很好;)给定示例数据,这是可行的,但如果整行都不可用,它将不起作用duplicated@ConradFrix是的。