主题:用SQL查询如题所示,怎么写这个语句呢
			 lanya
				 [专家分:0]  发布于 2005-08-30 15:04:00
 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
ryowu [专家分:6470]  发布于 2005-08-30 17:53:00				
				一个语句是解决不了了,要使用存储过程了
							 
						
				板凳
				
					 zjjsgxx [专家分:470]  发布于 2005-08-31 09:50: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
niuyifan [专家分:620]  发布于 2005-09-02 14:34:00				
				[em2]
							 
						
				4 楼
				
					 jhb12zsh26 [专家分:50]  发布于 2005-09-09 10:12:00
jhb12zsh26 [专家分:50]  发布于 2005-09-09 10:12:00				
				就是创建游标啊!
做2个游标,嵌套使用。好象不复杂嘛!
							 
						
				5 楼
				
					 fengqingyang [专家分:60]  发布于 2005-10-14 22:27:00
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
hndlp [专家分:50]  发布于 2005-10-24 11:11:00				
				最简单的是利用交叉表查询向导完成:行为student_id ,列为subject_id,数据区为score即可
							 
						
				7 楼
				
					 swg1982 [专家分:0]  发布于 2005-11-06 22:58:00
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
yudi010 [专家分:0]  发布于 2005-11-08 15:15:00				
				楼住的这个标的主件是学号和课程
但是要查询的是按照学号来进行
语句不是那么复杂
							 
									
			
我来回复