关于多表合并的问题(如何用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小时内删除。
发表评论