我在以下查询的其中一个表中没有数据;我的结果集是空的。我正在尝试使用NVL()功能;它仍然给出空集。 有人可以帮我理解这种行为。不过,我的期望是显示'0';得到空的结果。我正在使用oracle 11g。
SELECT NVL(T8.COLLECTION_BALANCE_AMT, 0)
from BV_COLLECTION_CLAIM T8 JOIN BV_CLAIM_LIABLE_INDV T2
ON T8.CLAIM_ID = T2.CLAIM_ID
JOIN BV_CLAIM_RECOVERY T3
ON T8.CLAIM_ID = T3.CLAIM_ID
答案 0 :(得分:1)
join
仅返回匹配的行。您正在寻找一个left join
,对于匹配不匹配的联接表中的列,它会返回null
:
SELECT NVL(T8.COLLECTION_BALANCE_AMT, 0)
FROM BV_COLLECTION_CLAIM T8
LEFT JOIN BV_CLAIM_LIABLE_INDV T2 -- here!
ON T8.CLAIM_ID = T2.CLAIM_ID
LEFT JOIN BV_CLAIM_RECOVERY T3 -- here too!
ON T8.CLAIM_ID = T3.CLAIM_ID