三表求和校验后更新Table B(ty=6)Amt字段的SQL需求
数据求和与校验更新需求
需求概述
需对三张表执行分组求和操作,若表B与表C的求和结果之和与表A的求和结果不一致,则更新表B中指定数据的金额字段。
各表分组求和查询语句
表A(gmr.BFR_CAL)
查询语句:
SELECT Unit, `group`, City, startdate, sum(Amt) FROM gmr.BFR_CAL GROUP BY unit, `group`, city, startdate
示例结果:
tyre mrf hyder 12-04-23 49
表B(gmr.DRAFT中ty=6的数据)
查询语句:
SELECT Unit, `group`, City, startdate, sum(Amt) FROM gmr.DRAFT WHERE ty = 6 GROUP BY unit, `group`, city, startdate
示例结果:
tyre mrf hyder 12-04-23 5
表C(gmr.DRAFT中ty≠6的数据)
查询语句:
SELECT Unit, `group`, City, startdate, sum(Amt) FROM gmr.DRAFT WHERE ty <> 6 GROUP BY unit, `group`, city, startdate;
示例结果:
tyre mrf hyder 12-04-23 18
校验与更新规则
- 校验条件:当
表B求和值 + 表C求和值 ≠ 表A求和值时,触发更新操作。 - 更新逻辑:更新表B中
ty=6的Amt字段,计算公式为:
AMT = 表A求和值 - (表B求和值 + 表C求和值)
计算示例
根据上述示例数据:
AMT = 49 - (18 + 5) AMT = 49 - 23 AMT = 26
更新后表B数据
将表B中原Amt值为5的记录更新为26,最终结果:
tyre mrf hyder 12-04-23 26
内容的提问来源于stack exchange,提问作者user22094638
相关产品推荐
相关产品推荐

