SQL数据库求和

创建一个数据库;如下
create table tb(姓名 varchar(10),课程 varchar(10),分数 int)

insert into tb values('张三','语文',74)

insert into tb values('张三','数学',83)

insert into tb values('张三','物理',93)

insert into tb values('李四','语文',74)

insert into tb values('李四','数学',84)

insert into tb values('李四','物理',94)
然后按课程类型分类查询
select 姓名 as 姓名,

max(case 课程 when'语文' then 分数 else 0 end)语文,

max(case 课程 when'数学' then 分数 else 0 end)数学,

max(case 课程 when'物理' then 分数 else 0 end)物理

from tb

group by 姓名
怎么在下面加上一条各课程的总分 如:
李四 74 84 94
张三 74 83 93
148 167 187

第1个回答  2009-12-09
select 姓名 as 姓名,max(case 课程 when'语文' then 分数 else 0 end)语文,max(case 课程 when'数学' then 分数 else 0 end)数学,max(case 课程 when'物理' then 分数 else 0 end)物理 from tb group by 姓名
union all
select '' 姓名 ,sum(语文),sum(数学),sum(物理) from (
select 姓名 as 姓名,max(case 课程 when'语文' then 分数 else 0 end)语文,max(case 课程 when'数学' then 分数 else 0 end)数学,max(case 课程 when'物理' then 分数 else 0 end)物理 from tb group by 姓名
) a
第2个回答  2009-12-09
select 姓名 as 姓名,

max(case 课程 when'语文' then 分数 else 0 end)语文,

max(case 课程 when'数学' then 分数 else 0 end)数学,

max(case 课程 when'物理' then 分数 else 0 end)物理

from tb

group by 姓名
union
select '',

sum(case 课程 when'语文' then 分数 else 0 end)语文,

sum(case 课程 when'数学' then 分数 else 0 end)数学,

sum(case 课程 when'物理' then 分数 else 0 end)物理

from tb本回答被提问者采纳
相似回答