質問

私は、次の結果セットを持っています:

  

タイプ|メソッド|

     

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を必要としません。ただまっすぐに集約ます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top