主题:用SQL查询如题所示,怎么写这个语句呢
lanya
[专家分:0] 发布于 2005-08-30 15:04:00
表结构:
student_id subject_id score
201001 日本語 80
201001 化学 80
201002 日本語 90
201003 日本語 100
201001 数学 80
201001 物理 85
201002 数学 86
201004 物理 87
通过查询表,要求查询出的数据如下(即根据student_id将各自的分数横向显示)
student_id 日本語 数学 物理 化学
201001 80 80 85 80
201002 90 86 null null
201003 100 null null null
201004 null null 87 null
回复列表 (共8个回复)
沙发
ryowu [专家分:6470] 发布于 2005-08-30 17:53:00
一个语句是解决不了了,要使用存储过程了
板凳
zjjsgxx [专家分:470] 发布于 2005-08-31 09:50:00
可以实现,只写了前两项,SQL语句如下:
SELECT a.student_id as 学号 ,a.score as 日本语,b.score as 数学
FROM subject_score a, subject_score b
where a.student_id=b.student_id and
a.subject_id="日本语" and b.subject_id="数学"
3 楼
niuyifan [专家分:620] 发布于 2005-09-02 14:34:00
[em2]
4 楼
jhb12zsh26 [专家分:50] 发布于 2005-09-09 10:12:00
就是创建游标啊!
做2个游标,嵌套使用。好象不复杂嘛!
5 楼
fengqingyang [专家分:60] 发布于 2005-10-14 22:27:00
假设表名stu
select student_id a.riyu,b.shuxue,c.yingyu,d.wuli from stu left join (select student_id,score as riyu from stu where subject_id='日本語') a on stu.student_id=a.student_id
left join(select student_id,score as shuxue from stu where subject_id='数学') b on stu.student_id=b.student_id
left join(select student_id,score as yingyu from stu where subject_id='英语') c on stu.student_id=c.student_id
left join(select student_id,score as wuli from stu where subject_id='物理') d on stu.student_id=d.student_id
后面有多少项,可以接着加,所以问题出在有多少项必须是确定的
6 楼
hndlp [专家分:50] 发布于 2005-10-24 11:11:00
最简单的是利用交叉表查询向导完成:行为student_id ,列为subject_id,数据区为score即可
7 楼
swg1982 [专家分:0] 发布于 2005-11-06 22:58:00
这是我的一条语句,测试通过。
select stuID,日语=
sum(case
when subject='日语' then score
else null
end),
数学=
sum(case
when subject='数学' then score
else null
end),
物理=
sum(case
when subject='物理' then score
else null
end)
,
化学=
sum(case
when subject='化学' then score
else null
end)
from stu
group by stuID
8 楼
yudi010 [专家分:0] 发布于 2005-11-08 15:15:00
楼住的这个标的主件是学号和课程
但是要查询的是按照学号来进行
语句不是那么复杂
我来回复