我正在尝试从我的表中删除重复的accountno。
SELECT ACCOUNTNO,DateTime,RESULTCODE,REF 来自dbo.Most_Recent_Result
我尝试过DISTINCT,但REF在某些行上有所不同。
如何删除重复的accountno?我只是想删除第二个匹配的accountno记录。
答案 0 :(得分:0)
SELECT DISTINCT ACCOUNTNO, DateTime, RESULTCODE, REF
FROM dbo.datetime as o
LEFT JOIN (SELECT ACCOUNTNO, MAX(datetime) AS max_datetime
FROM dbo.datetime GROUP BY ACCOUNTNO) i ON o.ACCOUNTNO = i.ACCOUNTNO
WHERE o.DateTime = i.max_datetime
这假设对于每个ACCOUNTNO重复条目,不存在具有相同DateTime的条目,否则您仍将获得重复项。
编辑:由于您的数据有多个具有相同日期的ACCOUNTNO,此时您可以添加DISTINCT关键字。这将删除每个ACCOUNTNO的最大日期重复
编辑2:如果您不关心将显示哪个RESULTCODE和REF字段,您可以使用聚合函数只获取一个:
SELECT DISTINCT o.ACCOUNTNO, o.DateTime, MAX(o.RESULTCODE), MAX(o.REF)
FROM dbo.datetime as o
LEFT JOIN (SELECT ACCOUNTNO, MAX(datetime) AS max_datetime
FROM dbo.datetime GROUP BY ACCOUNTNO) i ON o.ACCOUNTNO = i.ACCOUNTNO
WHERE o.DateTime = i.max_datetime
GROUP BY o.ACCOUNTNO, o.DateTime
ORDER BY ACCOUNTNO
答案 1 :(得分:0)
请试试这个:
select accountno, datetime, resultcode, ref
from (
select dense_rank() over (partition by accountno order by datetime desc, ref ) as rn
,accountno, datetime, resultcode, ref
from dto.datetime
)
where rn = 1
order by 1,2
这是我的reference。