Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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保留为最新日期_Sql - Fatal编程技术网

Sql 从表中删除重复值,并将ID保留为最新日期

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 ------

不是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
----------------------------------------------------------------
   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然后使用我的第一个查询。