关于多表合并的问题(如何用SQL语句将多个表合并,并且汇总),请指点![问题点数:100分,结帖人:winternet]
winternet
(冬天)
等 级:
结帖率:100.00%
楼主发表于:2004-08-26 17:40:02有如下表结构:
--学生信息(StudentInfo)
StudentId        Name
001                张一
002                张二
003                张三
004                张四
005                张五
--语文成绩表(Chinese)
多表left joinCouseId    StudentID    Score
C001            001                80
C001            003                90
--英语成绩表(English)
CouseId    StudentID    Score
E002            001                70
E002            002                95
现在要形成一个汇总表(Collect)
StudentId        Name      语文        英语      SumScore
001                张一        80          70            150
002                张二        0            95              95
003                张三        90          0                90
004                张四        0            0                0
005                张五        0            0                0
请问这个SQL语句应该怎样写呢?
对我有用[0]丢个板砖[0]引用举报管理TOP回复次数:10 
CSDMN
(冒牌经理 V0.4)
等 级:
#1楼 得分:20回复于:2004-08-26 17:44:13select  a.StudentId,a.Name,isnull(b.Score,0)  as  语文,isnull(c.Score,0)  as  英语,
isnull(b.Score,0)+isnull(c.Score,0)  as  SumScore
from  StudentInfo  a  left  join  Chinese  b
on  a.StudentId=b.StudentId
left  join  English  c
on  a.StudentId=c.StudentId
对我有用[0]丢个板砖[0]引用举报管理TOP精华推荐:MSSQL学习资料整理【最新】
hisi
(浮云)
等 级:
#2楼 得分:10回复于:2004-08-26 17:45:35select  A.studentId,  A.Name,  B.Score  as  语文,  C.Score  as  英语,  B.Score  +  C.Score  as  SumScore  from  StudentInfo  A,  Chinese  B,  English  C  where  A.studentid  =  B.studentid  and  a.studentid=C.studentid
对我有用[0]丢个板砖[0]引用举报管理TOP精华推荐:求答案:数据分组显示,增加递增编号
CSDMN
(冒牌经理 V0.4)
等 级:
#3楼 得分:5回复于:2004-08-26 17:46:03--语文成绩表(Chinese)
CouseId    StudentID    Score
C001            001                80
C001            003                90
--英语成绩表(English)
CouseId    StudentID    Score
E002            001                70
E002            002                95
既然有CouseId字段,为什么不合成一个表呢?
对我有用[0]丢个板砖[0]引用举报管理TOP精华推荐:征婚贴能推荐不?
zjcxc
(邹建)
 级:
2
2
更多勋章 #4楼 得分:20回复于:2004-08-26 17:47:31
select  a.StudentId,a.Name 
,语文=isnull(b.Score,0)
,英语=isnull(c.Score,0)
,SumScore=isnull(b.Score,0)+isnull(c.Score,0)
from  StudentInfo  a
left  join  Chinese  b  on  a.StudentID=b.StudentID
left  join  English  c  on  a.StudentID=c.StudentID
对我有用[0]丢个板砖[0]引用举报管理TOP精华推荐:选取两个表里的部分字段组成一个表
hdhai9451
(☆新人类☆)
等 级:
2
3
2
#5楼 得分:20回复于:2004-08-26 17:49:06select  a.StudentId,a.Name,b.score  as  語文,c.score  as  英語,isnull(b.score,0)+isnull(c.score,0)  as  SumScore 
from  StudentInfo  a 
left  join  Chinese  b  on  a.StudentID=b.StudentID 
left  join  English  c  on  a.StudentID=c.StudentID
对我有用[0]丢个板砖[0]引用举报管理TOP精华推荐:SQL注入专题--整理帖
libin_ftsafe
(子陌红尘[I'm 潇湘])
等 级:
5
更多勋章 #6楼 得分:10回复于:2004-08-26 17:49:53select  A.studentId, 
A.Name,
isnull(B.Score,0)  as  语文, 
isnull(C.Score,0)  as  英语, 
isnull(B.Score,0)  +  isnull(C.Score,0)  as  SumScore 
from  StudentInfo  A 
left  join  Chinese  B
on  A.studentid  =  B.studentid 
left  join  English  C 
on  A.studentid  =  C.studentid
对我有用[0]丢个板砖[0]引用举报管理TOP
winternet
(冬天)
等 级:
#7楼 得分:0回复于:2004-08-26 18:14:09我按照上述方法,但是得到的结果是这样:
StudentId        Name      语文        英语      SumScore
001                张一        80          70            80    70
002                张二        0            95            0      95
003                张三        90          0              90    0
004                张四        0            0              0      0
005                张五        0            0              0      0
对我有用[0]丢个板砖[0]引用举报管理TOP
winternet
(冬天)
等 级:
#8楼 得分:0回复于:2004-08-26 18:16:54已经解决问题,是我的SCORE的字段设为了CHAR类型.
对我有用[0]丢个板砖[0]引用举报管理TOP
azsoft
(Try my best)
等 级:
#9楼 得分:15回复于:2004-08-26 18:17:43select  a.StudentId,a.Name 
语文=isnull(b.Score,0)
,英语=isnull(c.Score,0)
,SumScore=cast(isnull(b.Score,0)  as  int)+cast(isnull(c.Score,0)  as  int)
from  StudentInfo  a
left  join  Chinese  b  on  a.StudentID=b.StudentID
left  join  English  c  on  a.StudentID=c.StudentID
对我有用[0]丢个板砖[0]引用举报管理TOP
winternet
(冬天)
等 级:
#10楼
得分:0回复于:2004-08-26 18:24:20TO:  CSDMN(冒牌经理  V0.2) 
因为这个表是我模仿要解决的问题而想出来的,多谢各位!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。