Как сложить значения данных столбца при использовании GROUP BY

#sql #sql-server #sql-server-2008

#sql #sql-сервер #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:

 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