SQL语句--行列转换以及字符串求和

来源:互联网 发布:阿里云服务器端口全开 编辑:程序博客网 时间:2024/05/17 07:14
  1. create table tempAB(A varchar(10),B varchar(10))
  2. insert into tempAB values('a1','b1')
  3. insert into tempAB values('a2','b1')
  4. insert into tempAB values('a3','b1')
  5. insert into tempAB values('a4','b2')
  6. insert into tempAB values('a5','b2')
  7. insert into tempAB values('a6','b2')
  8. //新建一个表,以下代码可以返回B的值为b2,所有对应的A的值相加起来的结果
  9. 首先就是把A列中符合条件的行转换为列,col+A的值为列名,
  10. 再把各列相加
  11. declare @sql varchar(4000)
  12. set @sql = 'select  '''''
  13. select @sql=@sql+'+table'+A+'.'+'col'+A
  14. from (select distinct A from tempAB where B='b2'as e
  15. select @sql=@sql+' from '
  16. select @sql=@sql+'(select a.'+'col'+A+' from(select (case A when '''+A+''' then A end) '+'col'+A+' '+
  17. 'from tempAB) a inner join (select (case A when '''+A+''' then A end) '+'col'+A+' '+
  18. 'from tempAB) b on a.col'+A+'=b.col'+A+') '+'table'+A+','
  19. from  (select distinct A from tempAB where B='b2'as f
  20. select @sql=substring(@sql,0,len(@sql))
  21. print @sql
  22. exec(@sql)
原创粉丝点击