Суммировать значения из нескольких строк в одну строку
В SQL Server 2012 у меня есть таблица my_table
, в которой есть столбцы state, month, ID
и sales
.
Моя цель состоит в том, чтобы объединить разные строки, которые имеют один и тот же state, month, ID
, в одну строку, суммируя столбец sales
этих выбранных строк в объединенную строку.
Например:
state month ID sales
-------------------------------
FL June 0001 12,000
FL June 0001 6,000
FL June 0001 3,000
FL July 0001 6,000
FL July 0001 4,000
TX January 0050 1,000
MI April 0032 5,000
MI April 0032 8,000
CA April 0032 2,000
Это то, что я должен получить
state month ID sales
-------------------------------
FL June 0001 21,000
FL July 0001 10,000
TX January 0050 1,000
MI April 0032 13,000
CA April 0032 2,000
Я провел некоторое исследование, и я обнаружил, что самосоединение должно делать что-то похожее на то, что я должен получить.
Ответы
Ответ 1
Если мне не хватает чего-то в требованиях, почему бы просто не использовать агрегатную функцию с GROUP BY
:
select state, month, id, sum(sales) Total
from yourtable
group by state, month, id
order by id
См. SQL Fiddle with Demo
Результат:
| STATE | MONTH | ID | TOTAL |
--------------------------------
| FL | July | 1 | 10000 |
| FL | June | 1 | 21000 |
| CA | April | 32 | 2000 |
| MI | April | 32 | 13000 |
| TX | January | 50 | 1000 |
Ответ 2
Учитывая, что в столбце id
должен быть указатель, этот запрос будет лучшим решением:
select state, month, id, sum(sales) Total
from yourtable
group by id, state, month
order by id