我想通过查询检索两个金额。 更具体地说,我有一个名为TABLE1的保存金额的表,其值如下:
TABLE1
------------------
| ID | AMOUNT |
------------------
| 100 | 100.2 |
| 511 | 400.1 |
| 730 | 200.7 |
------------------
另一个表格,具有特定id的flg值Y
TABLE2
----------------------------
| comb_nbr | ID | FLG |
----------------------------
| 10 | 511 | N |
| 10 | 100 | Y |
| 10 | 730 | N |
----------------------------
我想获得如下输出
Desired Output
--------------------------------
| TABLE1_AMOUNT | TABLE2_AMOUNT |
--------------------------------
| 100.2 | 100.2 |
---------------------------------
我使用以下查询来获取值。
SELECT SUM(CASE WHEN id = :p_amount_id THEN amount END) AS TABLE1_AMOUNT,
SUM(CASE WHEN id != :p_amount_id THEN amount END) AS TABLE2_AMOUNT
FROM table1
WHERE col_nbr = :p_column_nbr
AND line_nbr = :p_line_nbr
AND (id = :p_amount_id
OR id IN (SELECT id
FROM table2
WHERE comb_nbr = 10
AND flg = 'Y'));
我处理的问题是,如果子查询返回与bind_variable相同的id:p_amount_id 那么TABLE2_AMOUNT为空。 (由于运营商的原因) 有没有办法做到这一点?