我需要区分这两个查询的结果。
SELECT SUM(overwritten_ecl+ overwritten_ecl_off) A1
FROM llpa.h_rt_ifrs_provision
WHERE calculation_id = 1624
AND stage = 1
AND id_rip_code = 'HOPISD'
AND actual_urg = '0.5'
还有这个
SELECT SUM(overwritten_ecl+ overwritten_ecl_off) A2
FROM llpa.h_rt_ifrs_provision
WHERE calculation_id = 1652
AND stage = 1
AND id_rip_code = 'HOPISD'
AND actual_urg = '0.5'
第一个查询的结果是:123456,第二个查询的结果是:2345678。我需要做的是123456 - 2345678之间的简单区别。我怎么做一个查询?我试过 MINUS 运算符,但没有用。我正在使用 ORACLE SQL。
使用case
表达式进行条件聚合。SUM 1624 id 的正值和 1652 id 的负值。
SELECT SUM(case calculation_id
when 1624 then overwritten_ecl + overwritten_ecl_off
when 1652 then -overwritten_ecl - overwritten_ecl_off
else 0
end)
FROM llpa.h_rt_ifrs_provision
WHERE calculation_id IN (1624, 1652)
AND stage = 1
AND id_rip_code = 'HOPISD'
AND actual_urg = '0.5'
基本上与 Radim 的答案相同,但我在WHERE
子句中保留了计算 ID 条件。可能会加快速度。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句