2017-08-29 67 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