sql的行列互换

 
问题:假学生成(tb)如下:
  姓名 程 分数
  张 74
  张三 数学 83
  张三 物理 93
  李四 74
  李四 数学 84
  李四 物理 94
 
用sql语句得到以下结构:
  姓名 文 数学 物理
  ---- ---- ---- ----
  李四 74 84 94
  张三 74 83 93
  -------------------
--创建数据库
create table tb
(
            姓名 varchar(10) ,
            课程 varchar(10) ,
            分数 int
)
--添加数据
insert into tb values('张三' , '语文' , 70);
insert into tb values('张三' , '数学' , 80);
insert into tb values('张三' , '物理' , 90);
insert into tb values('李四' , '语文' , 71);
insert into tb values('李四' , '数学' , 81);
insert into tb values('李四' , '物理' , 92);
--事务提交
commit;

--select * from tb
--查询
select 姓名 as 姓名 ,
 max(case 课程 when '语文' then 分数 else 0 end) as 语文,
 max(case 课程 when '数学' then 分数 else 0 end) as 数学,
 max(case 课程 when '物理' then 分数 else 0 end) as 物理
from tb group by 姓名 order by 姓名 desc
posted @ 2013-04-02 18:19  奋斗的小菜鸟  阅读(150)  评论(0)    收藏  举报