#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