注册 登录
编程论坛 SQL Server论坛

求助:如何用一个表中字段 A 的平均值来更新另一个表中字段 B 的值?

lengyuefeng2 发布于 2014-11-10 22:40, 695 次点击
现在有两个表,表A和表B。
    表A中有字段sid,Aterm_id、Ateach_class_id、Atest_mark,其中sid是唯一的,相同的(Aterm_id,Ateach_class_id)对应很多个不同的Atest_mark值,即表A中(Aterm_id,Ateach_class_id)相同的记录有很多条;
    表B中有字段Bterm_id、Bteach_class_id、Btest_mark,相同的(Bterm_id,Bteach_class_id)对应唯一的Atest_mark值,即表B中(Bterm_id,Bteach_class_id)相同的记录只有一条。且表B中某条记录(Bterm_id、Bteach_class_id、Btest_mark)中字段Btest_mark的值是表A中对应term_id和teach_class_id相同的所有test_mark的平均值。
    求助,怎么用表A中Atest_mark的平均值来更新表B中Btest_mark字段对应的值?
5 回复
#2
tlliqi2014-11-11 11:59
应该是这样
upda 表B set 表B.Btest_mark=avg(表A.Atest_mark) from 表A where 表B.sid=表A.sid
没数据 未加验证
#3
厨师王德榜2014-11-11 14:30
update 表B
 set 表B.Btest_mark=avgAA.avgtestmark
 from 表B,(select 表A.sid as sid,avg(表A.Atest_mark) as avgtestmark group by 表A.sid)  as avgAA
 where 表B.sid=avgAA.sid

你验证一下.
#4
lengyuefeng22014-11-11 18:45
回复 2 楼 tlliqi
不好意思,我忘了说,表A的sid和表B的sid不一样,之间没有关系。
#5
lengyuefeng22014-11-11 19:02
回复 3 楼 厨师王德榜
你好,我之前没说清楚。表A的sid和表B的sid之间是没有关系的。
#6
lengyuefeng22014-11-11 19:23
回复 3 楼 厨师王德榜
补充:
    表A是原始学生课程评价数据表,字段有:[sid] 序号,[term_id] 学期ID,[course_code] 课程代码,[teach_class_id] 教学班号,[test1] 评价1得分(总分5分),[addtime]提交时间。每一条记录表示的是某个教学班的某个学生对某个学期的某个课程的评价得分,其中同一学期ID、且同一课程代码、且同一教学班号对应很多条记录,因因为班上的每个学生都有一条评价记录。(注:sid从1-45016,即共有45016条记录。)
    表B是修改后的学生课程评价数据表,字段有[sid] 序号,[term_id] 学期ID,[course_code] 课程代码,[teach_class_id] 教学班号,[test1] 评价1得分(总分5分)。每一条记录表示的是某个教学班的所有学生对某个学期的某个课程的评价得分的平均值,其中同一学期ID、且同一课程代码、且同一教学班号对应唯一的一条记录,因为test1字段中保存的是那个班上的学生评价的平均值。(注:sid从1-346,即共有346条记录,此sid与表A中的sid无关。)
    好像这里不能上传图片?貌似我还是没描述清楚(+﹏+)~
1