求一SQL语句,高手请进!

River2003 2006-06-09 06:37:23
数据

班级 学生 学科 成绩
A 学生A 数学 80
A 学生B 数学 90
A 学生A 语文 100
A 学生B 语文 80
A 学生C 英语 50
B 学生1 数学 80
B 学生2 数学 90
B 学生1 语文 100
B 学生2 语文 80



统计结果(没有总分的项也要显示为0)
班级 语文总分 数学总分 英语总分
A 180 170 50
B 180 170 0


怎么可以用SQL语句形成这样的结果呀,请大家帮忙呀
...全文
193 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
会飞的小洋洋 2006-06-12
  • 打赏
  • 举报
回复
^@^
liangpei2008 2006-06-11
  • 打赏
  • 举报
回复
不知不是错,不问才是过!LZ做的好:)
allismine 2006-06-11
  • 打赏
  • 举报
回复
学习
hycheng163 2006-06-09
  • 打赏
  • 举报
回复
这些例子好象好多的阿
LouisXIV 2006-06-09
  • 打赏
  • 举报
回复
发了又发-_-
liangpei2008 2006-06-09
  • 打赏
  • 举报
回复
Up
dssw 2006-06-09
  • 打赏
  • 举报
回复
我记得你问过拉!
xeqtr1982 2006-06-09
  • 打赏
  • 举报
回复
create table tb(班级 varchar(10),学生 varchar(10),学科 varchar(10),成绩 int)
insert into tb select 'A' , '学生A' , '数学' , 80
union all select 'A' ,'学生B' , '数学' ,90
union all select 'A' ,'学生A' , '语文' ,100
union all select 'A' ,'学生B' , '语文' , 80
union all select 'A' ,'学生C' , '英语' , 50
union all select 'B' ,'学生1' , '数学' , 80
union all select 'B' ,'学生2' , '数学' , 90
union all select 'B' ,'学生1' ,'语文' ,100
union all select 'B' ,'学生2' , '语文' , 80
--静态
select 班级,
语文总分=sum(case 学科 when '语文' then 成绩 else 0 end),
数学总分=sum(case 学科 when '数学' then 成绩 else 0 end),
英语总分=sum(case 学科 when '英语' then 成绩 else 0 end)
from tb
group by 班级

--动态
declare @sql varchar(8000)
set @sql='select 班级'
select @sql=@sql+',['+学科+'总分]=sum(case 学科 when '''+学科+''' then 成绩 else 0 end)' from tb group by 学科
exec(@sql+' from tb group by 班级')


drop table tb

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧