Pivot 多列转行

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)
*/

你可能感兴趣的:(Pivot,多列转行)