sql2000 实现行转列和列

有表如图,使用如下语句查询。报错:将 varchar 值 'AA' 转换为数据类型为 int 的列时发生语法错误。declare @sql varchar(500)set @sql='select 姓名'select @sql=@sql+',max(case 课程 when '''+课程+''' then 分数 else 0 end)['+课程+']'from (select distinct 课程 from tb) a --同from tb group by课程,默认按课程名排序set @sql=@sql+' from tb group by 姓名'exec (@sql)怎样修改可以转换“分数”为字符型的语句?

declare 
@sql varchar(1000)
set @sql='select 姓名'select @sql=@sql+',max(case 课程 when '''+课程+''' then 分数 else ''0'' end)['+课程+']' from (select distinct 课程 from tb) a  
set @sql=@sql+' from tb group by 姓名'
exec (@sql)

这样就行了,你分数字段是字符型,然后你else的0是数字型,不匹配,把0改成字符就OK

温馨提示:答案为网友推荐,仅供参考
相似回答