使用GROUP BY时如何添加列数据值

时间:2014-06-27 15:35:11

标签: sql sql-server sql-server-2008

我正在处理来自公用事业公司的数据。我有一个包含客户销售记录的表。每个销售记录都有一个客户编号,销售日期,销售凭证编号和销售金额。每个销售凭证编号只有一条记录。销售额是根据第二个表计算的,该表包含该月客户的每日使用量(CCF)。这两个表由销售凭证编号加入。我需要将每日使用量总结为一个总数。摘要应包括上面列出的所有列以及总使用量。这是一个数据样本。

Table A

CustomerNumber       Date        SalesDocNumber      Amount

15422                06/14/2012    123-UTL-23001     $112.25
13784                12/07/2007    854-UTL-14096     $75.11

Table B

SalesDocNumber        CCF
123-UTL-23001         25.45
123-UTL-23001         118
123-UTL-23001         56.10
854-UTL-14096         10.65
854-UTL-14096         15
854-UTL-14096         13
854-UTL-14096         22.75
854-UTL-14096         31

这是我的查询

SELECT A.CustomerNumber,
       A.Date,
       A.SalesDocNumber,
       A.Amount
       B.CCF
FROM Table A INNER JOIN Table B ON A.SalesDocNumber = B.SalesDocNumber
GROUP BY A.CustomerNumber, A. Date, A.SalesDocNumber, A. Amount, B.CCF

我的结果显示了表B中每条记录的一行,而不是将它们汇总成一行。

预期结果

15422    06/14/2012   123-UTL-23001  $112.25  199.55
13784    12/07/2001   854-UTL-14096  $75.11   92.40

任何帮助表示赞赏!!

1 个答案:

答案 0 :(得分:1)

SELECT A.CustomerNumber,
       A.Date,
       A.SalesDocNumber,
       A.Amount
       B.CCF
FROM TableA A
INNER JOIN (SELECT SalesDocNumber, SUM(CCF) AS CCF FROM TableB GROUP BY SalesDocNumber) B
ON A.SalesDocNumber = B.SalesDocNumber