質問
私は、次の結果セットを持っています:
タイプ|メソッド|
量Type1の現金額
Type1のチェック額
Type2の現金金額
Type2のチェック額
TYPE3現金額
TYPE3チェック額
そして、私はそれがこのように見えるようにしたい。
タイプ|現金|チェック
Type1の金額金額
Type2の金額金額
TYPE3金額金額
どのように私はT-SQL(2005構文OK)でこれを達成することができますか? Iは種類によって旋回する必要がある(1、2、3 ...)
解決
ここではPIVOTの試みです。
select *
from YourTable
PIVOT (sum(amount) FOR Method in (Cash,Check)) as Y
を考えると、それはちょうど2つの列だと、参加してみてください可能性があります:
select
type
, cash = a.amount
, check = b.amount
from yourtable a
full join yourtable b on a.type = b.type
where a.method = 'cash' or b.method = 'Check'
他のヒント
いっそます:
select
Type
, Cash = sum(case when Method = 'Cash' then Amount end)
, Check = sum(case when Method = 'Check' then Amount end)
from yourtable
group by
Type
適切であればCASEステートメントにELSE 0を追加します。
このフォームは、ピボット演算子よりも柔軟であり、JOIN FULLを必要としません。ただまっすぐに集約ます。
所属していません StackOverflow