表格是这样子的
name subject grade
张三 语文 90
张三 数学 80
张三 英语 70
李四 语文 60
李四 数学 90
李四 英语 80
用查询语句 使查出来的东西 显示成
姓名 语文 数学 英语
张三 90 80 70
李四 60 90 80
典型的行转列问题 我用的SQL代码是
- SQL code
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
虽然实现了功能 但是上头又给我新的难题,说我这种查询语句 对大型数据内容 比如上百万的数据就查的很慢了
然后叫我用分页查询来辅助完成上面的查询,从而优化查询。
我的上网查了一下 研究了一下 弄出个代码
- SQL code
select top 6 * from gradeswhere name not in(select top 0 name from grades order by name)order by name
之后我就完全不知道要怎么结合这些东西 完成查询的优化了,求高手指点,我是新手!今天刚注册。
------解决方案--------------------
这不是新建一个表,我只是做个例子给你看.
主体是这句:
- SQL code
SELECT name,语文,数学,英语 FROM t1PIVOT ( MAX(grade) FOR subject IN (语文,数学,英语))p