脑袋乱乱的,想不清楚,还是请大家帮忙想想了,谢谢。简单说就是一个考生表,基本信息字段若干,加分字段3个(加分1,加分2,加分3)
一个加分设置表,存的三个加分的条件,和满足条件的加分分数
一个条件互斥表,有可能某两个加分条件互斥,即当满足两个加分条件时只能有一个加分,加分值高的那个
还有个加分最大值,及加分总分不能超过多少。最简单的情况是没有条件互斥限制和加分最大限制
update 考生表 set 加分1=加分分数1 where 加分条件1
update 考生表 set 加分2=加分分数2 where 加分条件2
update 考生表 set 加分3=加分分数3 where 加分条件3
update 考生表 set 成绩=成绩+加分1+加分2+加分3可一加互斥和加分限制,就想不清楚了

解决方案 »

  1.   

    看的有点糊涂了
    这个思路行不?
    update 考生表 set 成绩=成绩+(case when 条件1 and 条件2 then 加分分数2......)
      

  2.   


    如果循环每个考生来判断我知道的,
    我想知道这种情况能不能只用SQL语句来实现,呵呵
      

  3.   

    --一个条件互斥表,有可能某两个加分条件互斥,即当满足两个加分条件时只能有一个加分,加分值高的那个还有个加分最大值?
    在条件中可以把加分条件用partition by 按升序排序,然后取其中升序排序中的第一条记录,就是你要的结果了。
    --加分总分不能超过多少?
    限制一下总分的值在多少partition by 使用方法:
    http://blog.163.com/soli1988_blog/blog/static/176895272201011244516473/