合并列并根据重复列添加值

时间:2015-11-19 12:42:52

标签: sql-server tsql merge

我的SQL Server中有行要根据重复的StartDate列进行合并。通过合并,我也想

ID     CustomerID     Amount     PurchaseDate     TimeStamp
1      113            20         2015-10-01       0x0000000000029817
2      113            30         2015-10-01       0x0000000000029818

根据上面的示例,我希望有一个列,其中Amount列的值总结。

ID     CustomerID     Amount     PurchaseDate     TimeStamp
2      113            50         2015-10-01       0x0000000000029818

我不确定应该如何处理这个问题:

  1. 使用新值创建新行或;
  2. 更新最新添加的行并将Amount添加到该行
  3. 但首先我想知道如何获取包含重复StartDate列值的行

    更新:我这里有旧值的删除脚本

    DELETE FROM Table WHERE ID NOT IN (SELECT MAX(ID) FROM Table GROUP BY CustomerID, PurchaseDate)
    

1 个答案:

答案 0 :(得分:1)

我建议更新最后插入的内容;

UPDATE T
SET Amount = X.Amount
FROM Table T INNER JOIN (
    SELECT MAX(ID), SUM(Amount)
    FROM Table
    GROUP BY CustomerID, PurchaseDate) X ON T.ID = X.ID)

在这种情况下,我建议删除旧值