动态生成SQL语句-行列转置

来源:互联网 发布:深圳乐其网络 编辑:程序博客网 时间:2024/05/20 16:35


create table tb(姓名   varchar(10),科目   varchar(20),成绩   int)
insert   into   tb(姓名,科目,成绩)   values( '林 ','软件测试',90)
insert   into   tb(姓名,科目,成绩)   values( '林 ','分布式数据库',70)
insert   into   tb(姓名,科目,成绩)   values( '王 ','分布式数据库',80)


declare @sqlstr varchar(8000)
set @sqlstr ='select 姓名'
select @sqlstr = @sqlstr + ',sum(case 科目 when ''' + 科目 + ''' then 成绩 else 0 end) [' +
科目 + ']'
from (select distinct 科目 from tb) as a order by 科目 desc
set @sqlstr=@sqlstr + ',sum(成绩) as 总分 from tb group by 姓名'
select @sqlstr
exec(@sqlstr)

---'''不能去掉

生成SQL动态语句
select 姓名,
    sum(case 科目 when '软件测试' then 成绩 else 0 end) [软件测试],
    sum(case 科目 when '分布式数据库' then 成绩 else 0 end) [分布式数据库],
    sum(成绩) as 总分
from tb group by 姓名

姓名         软件测试         分布式数据库   总分    
林              90                 70        160
王              0                  80         80


原创粉丝点击