如何将Excel双SUMIF除法逻辑转换为SQL Server单条UPDATE语句
可以通过单条SQL语句完成table1.total_operation列的更新,利用SQL Server的UPDATE结合分组聚合的JOIN即可实现对应Excel中SUMIF的逻辑。
具体SQL语句如下:
UPDATE t1 SET t1.total_operation = t2.sum_operation_value / t2.sum_quantity FROM table1 t1 INNER JOIN ( SELECT operation_id, SUM(operation_value) AS sum_operation_value, SUM(quantity) AS sum_quantity FROM table2 GROUP BY operation_id ) t2 ON t1.operation_id = t2.operation_id WHERE t2.sum_quantity <> 0; -- 防止除数为0引发错误
语句说明:
- 子查询部分:对
table2按operation_id分组,计算每个分组下operation_value的总和与quantity的总和,完全对应Excel中两个SUMIF的计算逻辑。 - 通过
INNER JOIN将table1与子查询结果关联,匹配相同的operation_id。 - 更新
table1的total_operation为对应分组的总和比值,同时添加WHERE条件避免除数为0的异常。
以你提供的示例数据为例,执行该语句后:
operation_id = 'A11'的total_operation会计算为(111.45+34.00+29.00)/(2+1+3) = 174.45/6 = 29.07,与预期结果一致。operation_id = 'A12'的结果为(20.40+34.00+1257.00)/(1262+5+18) = 1311.4/1285 ≈ 1.02operation_id = 'A13'的结果为1.45/435 ≈ 0.0033
内容的提问来源于stack exchange,提问作者Gabriel
相关产品推荐
相关产品推荐

