SQL删除重复项,保持最早/最晚的日期

时间:2018-05-30 14:39:40

标签: sql sql-server

我一直无法找到适用于我的情况的答案,虽然我确信这是相当简单的..

我有数据显示客户声明,每个声明包含“发件人”和“收件人”日期列,每个声明有多行(即单个声明中的多个时间段),以及多个客户

我想删除索赔的重复行,同时保留最早和最晚可能的日期

所以来自

Customer        Claim_ID        Code    From_Date   To_Date     Charge
023718421001    300038310129    A360    06/05/2017  13/05/2017  47
023718421002    300039554280    A360    31/07/2017  15/08/2017  47
023718421002    300039554280    A361    02/09/2017  12/09/2017  160
023718421002    300039573833    A100    01/09/2017  02/09/2017  100

Customer        Claim_ID      From_Date   To_Date     
023718421001    300038310129  06/05/2017    13/05/2017  
023718421002    300039554280  31/07/2017    12/09/2017
023718421002    300039573833  01/09/2017    02/09/2017  

道歉,如果这已被多次回答并且我的搜索已经完成,那么任何帮助都会非常感激。

非常感谢,

艾伦

2 个答案:

答案 0 :(得分:0)

按照Claim_ID进行分组,在From列上最小,To To Column:

Select 
    max(customer) Customer,
    [Claim_ID],
    min([From_Date]) [From_Date],
    max([To_Date]) [To_Date]
from
    table
group by
    [Claim_Id]

答案 1 :(得分:0)

您可以通过GROUP BY Customer,Claim_ID

获取结果
SELECT      Customer
            ,[Claim_ID]
            ,MIN([From_Date]) [From_Date]
            ,MAX([To_Date]) [To_Date]
FROM        TableName
GROUP BY    Customer, [Claim_Id]