当前位置: 代码迷 >> Sql Server >> 行转列-优化有关问题
  详细解决方案

行转列-优化有关问题

热度:67   发布时间:2016-04-27 12:36:05.0
行转列-优化问题
表格是这样子的
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
  相关解决方案