当前位置: 代码迷 >> Sql Server >> SQL2008怎么写TSQL语句进行一个成绩统计
  详细解决方案

SQL2008怎么写TSQL语句进行一个成绩统计

热度:89   发布时间:2016-04-24 10:06:07.0
SQL2008如何写TSQL语句进行一个成绩统计?
小弟是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 分的?