区分两个结果

马林

我需要区分这两个查询的结果。

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章