14

SQL Server 2012 には、my_tablestate, month, ID、およびを含むテーブルがありますsales

私の目標は、これらの選択された行の列をマージされた行にstate, month, ID合計しながら、同じ行を1つの行にマージすることです。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

要件に欠けているものがない限り、次のように集計関数を使用しないのはなぜですか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

列にインデックスがあるはずだと考えるとid、このクエリはより良い解決策になります。

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