日期:2014-05-17  浏览次数:20391 次

经典转换问题,散分了 !
当前数据:

AID      Aname   IsOpen1  IsOpen2   CS1        CS2       
1F3C     黄浦     0        1      家乐福     沃尔玛     
27B9     徐汇     1        0      家乐福     沃尔玛     
30AF     卢湾     1        1      家乐福     沃尔玛     


想要结果:

AID      Aname    家乐福   沃尔玛                    
1F3C      黄浦      0        1                  
27B9      徐汇      1        0                 
30AF      卢湾      1        1    
    
   

------解决方案--------------------

create table lee
(AID varchar(10), Aname varchar(10), 
 IsOpen1 int, IsOpen2 int, 
 CS1 varchar(10), CS2 varchar(10))

insert into lee
 select '1F3C', '黄浦', 0, 1, '家乐福', '沃尔玛' union all
 select '27B9', '徐汇', 1, 0, '家乐福', '沃尔玛' union all
 select '30AF', '卢湾', 1, 1, '家乐福', '沃尔玛'


select AID,Aname,[家乐福],[沃尔玛]
from
(select AID,Aname,CS1 'CS',IsOpen1 'IsOpen' from lee
 union all
 select AID,Aname,CS2 'CS',IsOpen2 'IsOpen' from lee) t
pivot(max(IsOpen) for CS in([家乐福],[沃尔玛])) p

/*
AID        Aname      家乐福         沃尔玛
---------- ---------- ----------- -----------
1F3C       黄浦         0           1
30AF       卢湾         1           1
27B9       徐汇    &