2013-05-16 46 views
1

您好我有一個表數據表爲:有條件地從連接表返回列值 - 甲骨文

Name Age Address 
---------------- 
Tom 21 XYZ 
John 23 X123 
Sam 32 Y123 

還有另一個表MappingTable:

Name Address 
------------- 
John A12345 

現在我想創建一個返回查詢如下:

Name Age Address 
---------------- 
Tom 21 XYZ 
John 23 A12345 
Sam 32 Y123 

我該怎麼做。我嘗試加入表格,但是會取代完整的列。我甚至無法使用更新,因爲我只使用此查詢返回視圖。

感謝, 莫妮卡

回答

3
select dt.name, 
     dt.age, 
     coalesce(mt.address, dt.address) 
from DataTable dt 
    left join MappingTable mt 
     on mt.Name = dt.Name; 
+0

犯規COALESCE返回第一個非空的表達式,並在我們的情況下,將所有的數據表返回值。所以我們不會得到MappingTable的值 – Monica

+0

@Monica:你是對的,我已經修復了我最初的錯字。 –

+0

即使這不起作用。但是如果我們使用NVL,我猜測 – Monica