SQL子集上的Pivot

时间:2009-06-02 06:54:34

标签: sql tsql pivot

我有以下结果集:

  

输入|方法|金额

     

Type1现金金额
  Type1检查金额
  Type2现金金额
  Type2检查金额
  Type3现金金额
  Type3检查金额


我希望看起来像这样:

  

输入|现金|检查

     

Type1金额
  Type2金额
  Type3金额

如何在T-SQL(2005语法确定)中实现此目的?我需要按类型(1,2,3 ......)

进行转动

2 个答案:

答案 0 :(得分:0)

这是对PIVOT的尝试:

select *
from YourTable
PIVOT (sum(amount) FOR Method in (Cash,Check)) as Y

鉴于它只有两列,可以尝试使用连接:

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'

答案 1 :(得分:0)

或者更好:

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

如果合适,将ELSE 0添加到CASE语句中。

此表单比PIVOT运算符更灵活,不需要FULL JOIN。只是直接聚合。