`
wfdoublext
  • 浏览: 127015 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

sql行列转换

    博客分类:
  • SQL
阅读更多
Create table  #T  (Class varchar(2),CallDate datetime, CallCount int)
insert into #T select '1','2005-8-8',40
union all select '1','2005-8-7',6
union all select '2','2005-8-8',77
union all select '3','2005-8-9',33
union all select '3','2005-8-8',9
union all select '3','2005-8-7',21
--动态SQL
declare @s varchar(8000)
set @s='select CallDate '
select @s=@s+',[CallCount'+Class+']=max(case when Class='''+Class+''' then CallCount else 0 end)'
from #T 
group by Class

set @s=@s+' from #T group by CallDate order by CallDate desc '
exec(@s)

drop table #T

 

完全行列转换

Create table #ta(xm varchar(10),v int ,haha int , pos int)
Go
Insert into #ta
 select '?目1',15,22,1 union all


 select '?目2',67,23,1 union all


 select '?目3',8,24,1 union all


 select 'xm4',3,25,1 


Go
--Start
declare @s varchar(1000)
select @s = isnull(@s +',','')+ '['+xm+']=  '+convert(nvarchar(10),v)
from (select  xm,v from #ta) a

--exec('select '+@s + ' from ta  group by pos')
set @s='select '+@s + ' from #ta  group by pos'
--select @s

declare @s1 varchar(1000)
select @s1 = isnull(@s1 +' ,','')+ ' ['+xm+']= '+ convert(nvarchar(10),haha)
from (select  xm, haha from #ta) a

set @s1='select '+@s1 + ' from #ta group by pos'
--exec('select '+@s1 + ' from ta group by pos')

exec('select * from  ( '+@s+' union all  '+@s1 + ' ) dd ')
    Drop table #ta

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics