第一次发贴,大家好。
新学SQL,遇到一个计算的问题,比较复杂,还请各位帮忙,谢了!先把逻辑说一下:1、A表。记录人员考核信息,每一行中包括个人基本信息和所有考核项的独立成绩,最后一个总分字段是需要计算后填入。2、B表。保存不同人员等级,所适用的各套权重比例。操作:根据A表人员的级别,判断使用哪一套权重比例,将此人的所有得分与权重相乘,将得到的分数填入A表该行的最后一个字段。用SQL能否做到呢?

解决方案 »

  1.   

      update a set .a.最后列 = (a.成绩1 + a.成绩2 + .....) * b.权重
      from A表 a,B表 b
      where a.关联键值 = b.关联键值
      

  2.   


    你好。
    -> update a set .a.最后列 = (a.成绩1 + a.成绩2 + .....) * b.权重
      A表中的 每个成绩 对应着 一个权重,每行所有成绩对应B表里的一个权重系列(列)。
      事实上,B表中,有多套这样的权重系列需要选择。
    -> where a.关联键值 = b.关联键值
      这里的关联值不是普通的ID相等。是根据A表中每一行人员的个人级别来进行判断。
      最终得到的就是适用于哪条权重列。
      

  3.   

    进展:翻了翻手头一本SQL2000的书,发现有个功能较游标,写了一段验证存储过程,感觉可以解决问题。
    不知道是否合适,还请各位帮看一看:大致方法如下:1、游标获取A表的当前行所有需要字段;
    2、将个人信息/各项分数赋值到不同变量;
    3、根据个人信息判断B表适用权重列;
    4、读取权重列的各权重值,赋值到变量;
    5、值变量 与 权重变量 进行运算;
    6、更新A表指定列;
    7、移动到A表下一条记录(循环直至最后一条)。需要更新的行数<1K,不知这个方式是否合适?
      

  4.   

    意思是这样的:A表中的每一行都记录一个人的2个基本信息 + N项单项成绩;
    然后通过这2个基本信息的组合判断,找出适用B表中哪一列的权重系列值。
    然后N项单项成绩 * 各自对应的权重值,再汇总,结果填入A表最后一个字段。
      

  5.   

    时间紧张,暂时结贴。X_0(鑫鑫) /gogodiy(数据库) ,之后再向两位请教!