小弟是SQL菜鸟,请大神赐教。小弟写了如下TSQL语句(SQL2008):
update 成绩表
set 总分=操行综合分总分
+体艺分总分+课程分总分+职业分总分
from 成绩表 inner join 操行综合分
on 操行综合分.学生ID=成绩表.学生ID inner join 体艺综合分
on 体艺综合分.学生ID=成绩表.学生ID inner join 课程综合分
on 课程综合分.学生ID=成绩表.学生ID inner join 职业技能分
on 职业技能分.学生ID=成绩表.学生ID
我希望实现这样的目的:总分=操行综合分总分*15%+体艺分总分*10%+课程分总分*60%+职业分总分*10%
而且,各个总分本身不能超过100分(即操行综合分总分,体艺分总分,课程分总分,职业分总分本身不能超过100分)所以得出的总分也才不会超过100分,请大神帮忙谢谢语句,感激不尽!
------解决方案--------------------
如果 总分本身不能超过100分(即操行综合分总分,体艺分总分,课程分总分,职业分总分本身不能超过100分) 是已有数据的规律
-- 先按公式更新
update 成绩表
set 总分=(操行综合分总分*15+体艺分总分*10+课程分总分*60+职业分总分*10)/100
from 成绩表 inner join 操行综合分
on 操行综合分.学生ID=成绩表.学生ID inner join 体艺综合分
on 体艺综合分.学生ID=成绩表.学生ID inner join 课程综合分
on 课程综合分.学生ID=成绩表.学生ID inner join 职业技能分
on 职业技能分.学生ID=成绩表.学生ID
-- 再对有误差的进行调整
update 成绩表
set 总分=100
from 成绩表
where 总分>100
否则,第一句做如下调整
-- 先按公式更新
update 成绩表
set 总分=((CASE WHEN 操行综合分总分<100 THEN 操行综合分总分 ELSE 100 END)*15
+(CASE WHEN 体艺分总分<100 THEN 体艺分总分 ELSE 100 END)*10
+(CASE WHEN 课程分总分<100 THEN 课程分总分 ELSE 100 END)*60
+(CASE WHEN 职业分总分<100 THEN 职业分总分 ELSE 100 END)*10
)/100
...
又:合计百分比是 95%,怎么会超 100 分的?