首页 > > > sql 动态拼接的一个问题,大侠帮忙看下 谢谢!
这个是写死的sql(when语文,数学,物理)
select 姓名,
max(case课程when'语文'then分数else0end)语文,
max(case课程when'数学'then分数else0end)数学,
max(case课程when'物理'then分数else0end)物理fromtbgroupby姓名
问题是下面的动态sql

declare@sqlvarchar(500)set@sql='select 姓名'select@sql=@sql+',max(case 课程 when '''+课程+''' then 分数 else 0 end)['+课程+']'from(selectdistinct课程from tb)aset@sql=@sql+' from tb group by 姓名'--print(@sql)exec(@sql)

我真的没体会到他的动态赋值 上面的sql when 后面的是写死的(when语文,数学,物理)
但是我打印出@sql又对了 所以很纳闷
我还原了动态sql语句
selectselect 姓名,
max(case课程when'课程'then分数else0end)课程fromtbgroupby 姓名from(selectdistinct课程fromtb)
感觉很不对,就是说没有理解他的写法 怎么动态赋值了? 哎 我也不知道说明白了没有
为什么就那么难理解呢,
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/75/viewspace-3161811/ ,如需转载,请注明出处,否则将追究法律责任。