14

在 SQL Server 2012 中,我有一个包含和my_table列的表。state, month, IDsales

我的目标是将具有相同内容的不同行合并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

我做了一些研究,发现自我加入应该做一些类似于我应该得到的事情。

4

2 回答 2

17

除非我在要求中遗漏了一些东西,否则为什么不直接使用带有 a 的聚合函数GROUP BY

select state, month, id, sum(sales) Total
from yourtable
group by state, month, id
order by id

请参阅带有演示的 SQL Fiddle

结果是:

| STATE |   MONTH | ID | TOTAL |
--------------------------------
|    FL |    July |  1 | 10000 |
|    FL |    June |  1 | 21000 |
|    CA |   April | 32 |  2000 |
|    MI |   April | 32 | 13000 |
|    TX | January | 50 |  1000 |
于 2012-12-18T19:51:40.677 回答
3

考虑到 column 应该有一个索引id,这个查询将是一个更好的解决方案:

select state, month, id, sum(sales) Total
from yourtable
group by id, state, month
order by id
于 2012-12-19T18:01:05.647 回答