将多行的值汇总为一行

msa*_*lem 14 sql t-sql sql-server sql-server-2012

在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
Run Code Online (Sandbox Code Playgroud)

这就是我应该得到的

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
Run Code Online (Sandbox Code Playgroud)

我做了一些研究,我发现自我加入应该做类似于我应该得到的东西.

Tar*_*ryn 17

除非我遗漏了要求中的某些内容,否则为什么不使用带有以下内容的聚合函数GROUP BY:

select state, month, id, sum(sales) Total
from yourtable
group by state, month, id
order by id
Run Code Online (Sandbox Code Playgroud)

请参阅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 |
Run Code Online (Sandbox Code Playgroud)