Sql 从表中删除重复值,并将ID保留为最新日期
不是SQL专家,但我需要一个SQL语句,它将返回一个包含最新日期的唯一值的表,因此根据ID删除所有重复值,并保留具有最新日期的ID 我当前的SQL语句如下所示:Sql 从表中删除重复值,并将ID保留为最新日期,sql,Sql,不是SQL专家,但我需要一个SQL语句,它将返回一个包含最新日期的唯一值的表,因此根据ID删除所有重复值,并保留具有最新日期的ID 我当前的SQL语句如下所示: Select Bill_To_Merchant_ID, Agreement_Termination_Notification_Date From STG.Fact_Agreement 当前结果: Bill_To_Merchant_ID Agreement_Termination_Notification_Date ------
Select Bill_To_Merchant_ID, Agreement_Termination_Notification_Date
From STG.Fact_Agreement
当前结果:
Bill_To_Merchant_ID Agreement_Termination_Notification_Date
----------------------------------------------------------------
1 01/09/2020
1 03/09/2020
2 05/09/2020
2 07/09/2020
3 06/09/2020
3 16/09/2020
预期结果:
Bill_To_Merchant_ID Agreement_Termination_Notification_Date
----------------------------------------------------------------
1 03/09/2020
2 07/09/2020
3 16/09/2020
如果没有重复项,则该记录将保留在结果集中。我想您只需要
分组依据
:
select Bill_To_Merchant_ID, max(Agreement_Termination_Notification_Date)
from STG.Fact_Agreement
group by Bill_To_Merchant_ID;
如果要实际删除非最新记录,请使用:
DELETE
FROM yourTable t1
WHERE EXISTS (SELECT 1 FROM yourTable t2
WHERE t2.Bill_To_Merchant_ID = t2.Bill_To_Merchant_ID AND
t2.Agreement_Termination_Notification_Date > t1.Agreement_Termination_Notification_Date);
相反,如果您可以容忍仅在预期输出中查看数据,那么聚合应该可以工作:
SELECT
Bill_To_Merchant_ID,
MAX(Agreement_Termination_Notification_Date) AS Agreement_Termination_Notification_Date
FROM yourTable
GROUP BY
Bill_To_Merchant_ID;
您好,我想保留最新的记录并删除日期较旧的值,如上例所示。@Route217然后使用我的第一个查询。