主要应用case语句来解决行转列的问题 行转列问题主要分为两类 1)简单的行转列问题: 示例表: id sid course result 1 2005001 语文 80.0 2 2005001 数学 90.0 3 2005001 英语 80.0 4 2005002 语文 56.0 5 2005002 数学 69.0 6 2005002 英语 89.0 执行 select sid,语文=isnull(sum(case course when '语文' then result end),0), 数学=isnull(sum(case course when '数学' then result end),0), 英语=isnull(sum(case course when '英语' then result end),0) from result group by sid order by sid 得出结果 sid 语文 数学 英语 2005001 80.0 90.0 80.0 2005002 56.0 69.0 89.0 2)较为复杂的行转列 表1:course id name 1 语文 2 数学 3 英语 表2:result id sid course result 1 2005001 语文 80.0 2 2005001 数学 90.0 3 2005001 英语 80.0 4 2005002 语文 56.0 5 2005002 数学 69.0 6 2005002 英语 89.0 declare @sql varchar(8000) set @sql='select sid' select @sql=@sql+','+course.name+'=isnull(sum(case course when '''+course.name+''' then result end),0)' from course order by id set @sql=@sql+' from result group by sid order by sid' print @sql exec(@sql) 得出结果 sid 语文 数学 英语 2005001 80.0 90.0 80.0 2005002 56.0 69.0 89.0
sql server行转列[转]
猜你喜欢
转载自baobaojinjin.iteye.com/blog/1961438
今日推荐
周排行