关于交叉表!

tflb 2003-11-21 09:50:50
学生(学号,姓名,班级编号)
20030101 王好 200301
20030102 李国 200301
...
课程(课程编号,课程名)
101 数学
102 语文
103 英语
....
成绩(成绩编号,学号,课程编号,成绩,时间)
1 20030101 101 90 2003-09-01
2 20030102 102 95 2003-09-01
3 20030101 102 89 2003-09-01
...
上面是我的数据设计
这样的显示我已经实现了,如下
学号 姓名 数学 语文 英语 ..... 时间
20030101 王好 90 85 89 2003-09-01
20030102 李国 85 95 96 2003-09-01

select 学号,sum(case 课程 when '数学' then 成绩 else 0 end) as '数学',

sum(case 课程 when '英语' then 成绩 else 0 end) as '英语',

sum(case 课程 when '语文' then 成绩 else 0 end) as '语文'

from 成绩
group by 学号


我现在想显示成如下
学号 姓名 数学 语文 英语 .....总分 平均分 时间
20030101 王好 90 85 89 268 88 2003-09-01
20030102 李国 85 95 96 275 90 2003-09-01
学科是固定不变的,有10门课
重要是总分和平均分如何显示,请指点一下.先谢谢了!!
...全文
43 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengdali 2003-11-21
  • 打赏
  • 举报
回复
select 学号,sum(case 课程 when '数学' then 成绩 else 0 end) as '数学',

sum(case 课程 when '英语' then 成绩 else 0 end) as '英语',

sum(case 课程 when '语文' then 成绩 else 0 end) as '语文',sum(成绩) 总分,avg(成绩) 平均分,max(时间) 时间 into #临时表
from 成绩
group by 学号

select (select count(*)+1 from #临时表 where 总分<tem.总分) 名次,* from #临时表 tem
pengdali 2003-11-21
  • 打赏
  • 举报
回复
select (select count(*)+1 from (select 1 from 成绩 group by 学号 having sum(成绩)<aaa.总分) tem) 名次,*

from (
select 学号,sum(case 课程 when '数学' then 成绩 else 0 end) as '数学',

sum(case 课程 when '英语' then 成绩 else 0 end) as '英语',

sum(case 课程 when '语文' then 成绩 else 0 end) as '语文',sum(成绩) 总分,avg(成绩) 平均分,max(时间) 时间
from 成绩
group by 学号) aaa
tflb 2003-11-21
  • 打赏
  • 举报
回复
谢谢pengdali(大力 V3.0) 果然是高手.
现在还想问一个问题,如何在前面加一个"名次"列呀!!
名次  学号 姓名 数学 语文 英语 .....总分 平均分 时间
 1 20030101 王好 90 85 89 268 88 2003-09-01
2 20030102 李国 85 95 96 275 90 2003-09-01
答完就结,先谢谢了
pengdali 2003-11-21
  • 打赏
  • 举报
回复
select 学号,sum(case 课程 when '数学' then 成绩 else 0 end) as '数学',

sum(case 课程 when '英语' then 成绩 else 0 end) as '英语',

sum(case 课程 when '语文' then 成绩 else 0 end) as '语文',sum(成绩) 总分,avg(成绩) 平均分,max(时间) 时间

from 成绩
group by 学号

34,874

社区成员

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

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