在以前写过的项目中SQL中经常遇到行变列的处理
大多使用的方法是先捞出数据在进行循环得到结果
刚刚发现一个好方法,可以直接用SQL语句执行达到这个效果
不用进行循环。
--测试数据
SQL -  Row to Columnscreate table tb1(tid int,tvalue varchar(20))
SQL -  Row to Columns
insert tb1 select 1,'2004Q1' union all select 1,'2004Q2' union all select 1,'2004Q3'
SQL -  Row to Columns
union all select 1,'2004Q4'  union all select 1,'2005Q1'  union all select 2,'2006Q3'
SQL -  Row to Columns
union all select 2,'2006Q4' union all select 3,'2008Q2' union all select 3,'2008Q3'
SQL -  Row to Columns
--生成结果
SQL -  Row to Columns
declare @s varchar(100set @s=''
SQL -  Row to Columns
select @s=@s+',['+tvalue+']=''''' from tb1 where tid=1
SQL -  Row to Columns
exec('select distinct tid'+@s+' from tb1 where tid=1')
SQL -  Row to Columns
drop table tb1 

相关文章:

  • 2021-06-01
  • 2022-12-23
  • 2022-12-23
  • 2019-03-21
  • 2021-11-21
  • 2022-01-20
  • 2021-08-07
猜你喜欢
  • 2021-07-18
  • 2021-08-12
  • 2021-10-22
  • 2021-12-15
  • 2021-04-21
  • 2021-12-23
  • 2022-12-23
相关资源
相似解决方案