SQL Server 2012には、my_table
列とsales
列を持つテーブルstate, month, ID
があります。
私の目標は、これらの選択された行のsales
列をマージされた行に合計しながら、同じstate, month, ID
を持つ異なる行を1つの行にマージすることです。
例えば:
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
私はいくつかの研究を行いましたが、自己結合は私が得ようとしていることに似た何かをすることになっていることがわかりました。
要件に何かが欠けていない限り、単にGROUP BY
:
select state, month, id, sum(sales) Total
from yourtable
group by state, month, id
order by id
結果は次のとおりです。
| STATE | MONTH | ID | TOTAL |
--------------------------------
| FL | July | 1 | 10000 |
| FL | June | 1 | 21000 |
| CA | April | 32 | 2000 |
| MI | April | 32 | 13000 |
| TX | January | 50 | 1000 |
列id
にインデックスが必要であることを考慮すると、このクエリはより良い解決策になります。
select state, month, id, sum(sales) Total
from yourtable
group by id, state, month
order by id