求一条SQL语句,高手请进!答者给分!

iceberg_zj 2005-10-06 08:52:52
我有个表(XH,XM,SID,Mark,KH) 对应的意义是(学号,姓名,科目号,成绩,考试号)。当然科目号有多个,这里有六个(语文,数学,英语,自然,社会,政治)。现在我要用SQL语句,实现多表查询。结果表示成一张表(XH,XM,1.Mark,2.Mark,3.Mark,4.Mark,5.Mark,6.Mark,各门总分)这里1——6对应语文——政治。这个SQL语句怎么写? 名门总分是指这个学生的各门课程的总分。
...全文
121 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
LeoCockroach 2005-11-03
declare @s varchar(800)
set @s=''
select
@s=@s+',['+SID+'Mark]=sum(case when SID='+SID+' then Mark end)'
from b
group by SID
set @s='select XH,XM'+@s+',sum(Mark) 总分 from b group by XH,xm'
print @s
exec(@s)
这样也可以解决
回复
syeerzy 2005-10-07
上面的语句忘记加ON了,加个ON A.XH=B.XH 在后面。
回复
syeerzy 2005-10-07
SELECT XH,XM,A.Mark AS m1,B.Mark AS m2 FROM Table1 A WHERE A.SID =1
INNER JOIN (
SELECT XH,XM,A.Mark AS m1,B.Mark AS m2 FROM Table1 B WHERE B.SID =2 )

可以得到
10101,张三,1的成绩,2的成绩
10102,李四,1的成绩,2的成绩

类似自己改一下就是了。

另外,你的数据库结构严重不合理,很容易出错!!!
回复
syeerzy 2005-10-07
交叉查询不就行了?
回复
sky_2008 2005-10-06
你把要查询的成绩在用一条SQL语句不就行了,一个select里面一个子查询,我也是新手,不知道我说的对不对
回复
dushizhuma 2005-10-06
关注一下。。和上次我面试的题目一样。呵呵。。。
回复
iceberg_zj 2005-10-06
(XH,XM,SID,Mark,KH)
10101,张三,1,90,001
10101,张三,2,80,001
10101,张三,3,70,001
10101,张三,4,85,001
10101,张三,5,77,001
10101,张三,6,89,001
10102,李四,1,90,001
10102,李四,2,80,001
10102,李四,3,70,001
10102,李四,4,85,001
10102,李四,5,77,001
10102,李四,6,89,001
10103,王五,1,90,001
10103,王五,2,80,001
10103,王五,3,70,001
10103,王五,4,85,001
10103,王五,5,77,001
10103,王五,6,89,001

现在我要生成一张新张
10101,张三,1的成绩,2的成绩,3的成绩,4的成绩,5的成绩,6的成绩,6门的总分
10101,李四,1的成绩,2的成绩,3的成绩,4的成绩,5的成绩,6的成绩,6门的总分
10101,王五,1的成绩,2的成绩,3的成绩,4的成绩,5的成绩,6的成绩,6门的总分

怎么写SQL语句???



回复
LeoCockroach 2005-10-06
你的表分析的有些 乱 两个表是这样的 我认为以上观点全是个人观点 不代表什么
studentInfo(XH,XM) subjectInfo(SID,Sname,Mark,XH)
如subjectInfo 有  如studentInfo 有
001 语文 90 S001  S001 ***
002 外语 90 S001
003 数学 90 S001
这样表就应该清楚了 
创建视图就可以了 不会视图 我也可以再发
回复
K_VVV_K 2005-10-06
关注ing……
回复
xwqjamky 2005-10-06
说清楚这两个表的关系
回复
相关推荐
发帖
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
帖子事件
创建了帖子
2005-10-06 08:52
社区公告
暂无公告