- create table tempAB(A varchar(10),B varchar(10))
- insert into tempAB values('a1','b1')
- insert into tempAB values('a2','b1')
- insert into tempAB values('a3','b1')
- insert into tempAB values('a4','b2')
- insert into tempAB values('a5','b2')
- insert into tempAB values('a6','b2')
- //新建一个表,以下代码可以返回B的值为b2,所有对应的A的值相加起来的结果
- 首先就是把A列中符合条件的行转换为列,col+A的值为列名,
- 再把各列相加
- declare @sql varchar(4000)
- set @sql = 'select '''''
- select @sql=@sql+'+table'+A+'.'+'col'+A
- from (select distinct A from tempAB where B='b2') as e
- select @sql=@sql+' from '
- select @sql=@sql+'(select a.'+'col'+A+' from(select (case A when '''+A+''' then A end) '+'col'+A+' '+
- 'from tempAB) a inner join (select (case A when '''+A+''' then A end) '+'col'+A+' '+
- 'from tempAB) b on a.col'+A+'=b.col'+A+') '+'table'+A+','
- from (select distinct A from tempAB where B='b2') as f
- select @sql=substring(@sql,0,len(@sql))
- print @sql
- exec(@sql)
SQL语句--行列转换以及字符串求和
最新推荐文章于 2022-04-23 10:39:45 发布
本文介绍了一种使用SQL语句实现将表中的某列数据按条件转为多列,并对特定列进行求和的方法。通过动态SQL实现列转行及计算,适用于需要汇总特定条件下各分项总和的场景。

9906

被折叠的 条评论
为什么被折叠?



