Подтвердить что ты не робот

Суммировать значения из нескольких строк в одну строку

В 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

Я провел некоторое исследование, и я обнаружил, что самосоединение должно делать что-то похожее на то, что я должен получить.

4b9b3361

Ответ 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