多个列转换为行记录

前两天的存储过程果真可以优化很多,原来是用到这个东东哦~~~~

 

/*--
 下面的示例中,按照列Groups分组,统计不同的Item、Color的Quantity合计数据
 并且将列Item和Color的统计结果水平显示。
--*/


DECLARE @t TABLE(Groups char(2),Item varchar(10),Color varchar(10),Quantity int)
INSERT @t SELECT 'aa','Table','Blue', 124
UNION ALL SELECT 'bb','Table','Red',  -23
UNION ALL SELECT 'bb','Cup'  ,'Green',-23
UNION ALL SELECT 'aa','Chair','Blue', 101
UNION ALL SELECT 'aa','Chair','Red',  -90




--查询处理
SELECT Groups,
 [Table]=SUM(CASE Item WHEN 'Table' THEN Quantity END),
 [Cup]=SUM(CASE Item WHEN 'Cup' THEN Quantity END),
 [Chair]=SUM(CASE Item WHEN 'Chair' THEN Quantity END),
 [Blue]=SUM(CASE Color WHEN 'Blue' THEN Quantity END),
 [Red]=SUM(CASE Color WHEN 'Red' THEN Quantity END),
 [Green]=SUM(CASE Color WHEN 'Green' THEN Quantity END)
FROM @t
GROUP BY Groups
/*--结果
Groups Table       Cup       Chair        Blue       Red       Green
--------- --------------- ---------------- ----------------- --------------- ---------------- ---------------
aa     124       NULL      11          225        -90         NULL
bb     -23       -23         NULL      NULL      -23         -23
--*/















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值