使用SUM组合多个行,这些行共享相同的列值但具有不同的其他列值

时间:2015-06-23 15:51:50

标签: sql sql-server

我认为这将是一个非常简单的查询,但出于某种原因,我似乎无法得到我正在寻找的结果。我有一个具有这种结构的表。我只想为每个帐户输入一个条目,同时总结费用。我真的不在乎我保留的日期,只是其中之一。

Account Charges Charges2    Date
1       100      50       1/1/2015
1       50       0        1/2/2015
2       50       0        2/4/2015
2       70       30       2/19/2015
3       100      0        1/12/2014
4       0        20       4/3/2015
4       40       20       4/9/2015

我想要的结果是:

Account Charges Charges2    Date
1       150      50       1/1/2015
2       120      30       2/4/2015
3       100      0        1/12/2014
4       40       40       4/3/2015

我目前得到的结果是:

Account Charges Charges2    Date
1       100      50       1/1/2015
2       70       30       2/19/2015
3       100      0        1/12/2014
4       40       40       4/9/2015

我认为这很简单,我在下面尝试过。但是这并没有总结它们,它似乎只返回Charges2不为0的行。

SELECT Account, SUM(Charges) As TotCharges, SUM(Charges2) AS TotCharges2
FROM TABLE
GROUP BY Account
ORDER BY Account

1 个答案:

答案 0 :(得分:1)

您可以将min()聚合函数应用于日期,以限制每个帐户返回一行的行数:

SELECT 
  Account, 
  SUM(Charges)  AS TotCharges, 
  SUM(Charges2) AS TotCharges2, 
  MIN(Date) AS Date
FROM TABLE
GROUP BY Account
ORDER BY Account

Sample SQL Fiddle