行转列-优化问题
表格是这样子的
name subject grade
张三 语文 90
张三 数学 80
张三 英语 70
李四 语文 60
李四 数学 90
李四 英语 80
用查询语句 使查出来的东西 显示成
姓名 语文 数学 英语
张三 90 80 70
李四 60 90 80
典型的行转列问题 我用的SQL代码是
select name as 姓名 ,max(case subject when '语文' then grade else 0 end) 语文,max(case subject when '数学' then grade else 0 end) 数学,max(case subject when '英语' then grade else 0 end) 英语 from grades group by name
select top 6 * from gradeswhere name not in(select top 0 name from grades order by name)order by name
SELECT name,语文,数学,英语 FROM t1PIVOT ( MAX(grade) FOR subject IN (语文,数学,英语))p