第一次发贴,大家好。
新学SQL,遇到一个计算的问题,比较复杂,还请各位帮忙,谢了!先把逻辑说一下:1、A表。记录人员考核信息,每一行中包括个人基本信息和所有考核项的独立成绩,最后一个总分字段是需要计算后填入。2、B表。保存不同人员等级,所适用的各套权重比例。操作:根据A表人员的级别,判断使用哪一套权重比例,将此人的所有得分与权重相乘,将得到的分数填入A表该行的最后一个字段。用SQL能否做到呢?
新学SQL,遇到一个计算的问题,比较复杂,还请各位帮忙,谢了!先把逻辑说一下:1、A表。记录人员考核信息,每一行中包括个人基本信息和所有考核项的独立成绩,最后一个总分字段是需要计算后填入。2、B表。保存不同人员等级,所适用的各套权重比例。操作:根据A表人员的级别,判断使用哪一套权重比例,将此人的所有得分与权重相乘,将得到的分数填入A表该行的最后一个字段。用SQL能否做到呢?
from A表 a,B表 b
where a.关联键值 = b.关联键值
你好。
-> update a set .a.最后列 = (a.成绩1 + a.成绩2 + .....) * b.权重
A表中的 每个成绩 对应着 一个权重,每行所有成绩对应B表里的一个权重系列(列)。
事实上,B表中,有多套这样的权重系列需要选择。
-> where a.关联键值 = b.关联键值
这里的关联值不是普通的ID相等。是根据A表中每一行人员的个人级别来进行判断。
最终得到的就是适用于哪条权重列。
不知道是否合适,还请各位帮看一看:大致方法如下:1、游标获取A表的当前行所有需要字段;
2、将个人信息/各项分数赋值到不同变量;
3、根据个人信息判断B表适用权重列;
4、读取权重列的各权重值,赋值到变量;
5、值变量 与 权重变量 进行运算;
6、更新A表指定列;
7、移动到A表下一条记录(循环直至最后一条)。需要更新的行数<1K,不知这个方式是否合适?
然后通过这2个基本信息的组合判断,找出适用B表中哪一列的权重系列值。
然后N项单项成绩 * 各自对应的权重值,再汇总,结果填入A表最后一个字段。