Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 选择最后一个id不同的重复行Oracle 11g_Sql_Oracle11g - Fatal编程技术网

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是的。