2017-08-29 63 views
3

嘗試檢查多個字段的空值以創建不含空值的主字段。在下面的情況下,我試圖檢查幾個「城市」字段,直到我得到一個非空值,但這種說法不按預期工作。檢查跨域的多個空值

CASE 
WHEN b.BillingCity IS NULL THEN b.ShippingCity 
WHEN b.BillingCity IS NULL AND b.ShippingCity IS NULL THEN c.BillingCity 
WHEN b.BillingCity IS NULL AND b.ShippingCity IS NULL AND c.BillingCity IS NULL THEN b.ES_APP__ESCity__c 
WHEN b.BillingCity IS NULL AND b.ShippingCity IS NULL AND c.BillingCity IS NULL AND b.ES_APP__ESCity__c IS NULL THEN b.Avn_City__c 
ELSE Null 
END 
As MasterCity 
+1

我認爲最好的答案是使用COALESCE如下面的答覆中提到。但我認爲值得一提的是,如果您對「WHEN」語句重新排序,以便第一個是最後一個,第二個將是第三個......等等,那麼它會得到您需要的結果。 –

+1

請注意,如果b.BillingCity爲NULL,它將始終轉到您的案例表達式中的第一個條件。它不評估每個案例,看哪一個是「最真實」的。你將不得不重新排列這整個事情,所以得到最後一個在頂部等。 –

+0

@SeanLange謝謝你的澄清 – hansolo

回答

6

你可以用COALESCE

SELECT COALESCE(b.BillingCity,b.ShippingCity,c.BillingCity,.....) 
+1

@ hansolo你是什麼意思?,它確實返回第一個非空值 – Lamak

+0

你是對的..我的錯誤。謝謝 – hansolo