Pivot 多列转行

来源:互联网 发布:mac妆前乳专柜价格 编辑:程序博客网 时间:2024/05/16 07:49
create table ch
(ID int,Item1 varchar(5),Number1 int,Number2 int)
 
insert into ch
 select 1,'A',10,1 union all
 select 1,'B',5,3 union all
 select 1,'A',3,2 union all
 select 2,'A',5,3 union all
 select 2,'B',1,2 union all
 select 2,'B',2,2
 
 
select ID,[A(Number1)],[A(Number2)],[B(Number1)],[B(Number2)]
from
(select ID,Item1+'('+c+')' 'c',v
 from
 (select ID,Item1,sum(Number1) 'Number1',sum(Number2) 'Number2'
  from ch
  group by ID,Item1) a
 unpivot(v for in([Number1],[Number2])) u) b
pivot(max(v) for in([A(Number1)],[A(Number2)],[B(Number1)],[B(Number2)])) p
 
/*
ID          A(Number1)  A(Number2)  B(Number1)  B(Number2)
----------- ----------- ----------- ----------- -----------
1           13          3           5           3
2           5           3           3           4
 
(2 row(s) affected)
*/
0 0
原创粉丝点击