2016-02-04 62 views
0

enter image description here列空或空然後從其他表中提取值

我在Postgresql中有3個表。我有一個表C,其中我想要表A的 結果。如果區域的值爲空/從 表A中空白,那麼我需要表B的區域值。如何在Postgresql中加入這些 ?或者,Talend如何做到這一點?

+3

到目前爲止所做的工作。 –

回答

0

這樣的事情呢?

SELECT * FROM (
    SELECT COALESCE(ta.country, tb.country) as country, tc.region 
    FROM tb 
    FULL OUTER JOIN (
    SELECT country, region FROM tablec 
) tc ON tc.country = tb.country 
    FULL OUTER JOIN (
    SELECT country, region FROM tablea 
) ta ON ta.country = tb.country 
) WHERE country IS NOT NULL AND region IS NOT NULL 

它會將所有表壓縮到一起,然後選擇首選行然後丟棄爲空。 COALESCE將從其參數中選擇第一個非空值。

0

在Talend中,您可以使用tMap組件,其中主輸入是來自TableA的行,TableC是查找表。在輸出端,您可以爲區域列定義以下內容: StringUtils.convertEmptyToNull(mainrow.region) != null ? mainrow.region : lookuprow:region

相關問題