Oracle 11g中的NVL功能

时间:2015-01-29 15:36:43

标签: sql oracle select nvl

我在以下查询的其中一个表中没有数据;我的结果集是空的。我正在尝试使用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

1 个答案:

答案 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