我有3种不同的CTE结局,我需要相互保持联系:
主表df = df.groupby('City')[['City','Country']].fillna(method = 'ffill').groupby('City')[['City','Country']].fillna(method = 'bfill')
包含所有@Policies
值:
VehiclePolicyLimitsID
:
@LiabilityPremium
:
作为示例,我将CTE的结果模拟为3个表变量:
@HiredPremium
但是由于某种原因,LiabilityPremium的结果全为NULL:
我希望结果看起来像这样,总LiabilityPremium = $ 3,736
有什么办法可以通过某种方式获得理想的结果吗?
答案 0 :(得分:4)
这是因为加法运算符两侧的null
将产生null
的结果。您可以使用ISNULL(LiabilityPremium, 0)
示例:
ISNULL(l.LiabilityPremium,0) + ISNULL(h.LiabilityPremium,0) as LiabilityPremium
或者您可以使用COALESCE
代替ISNULL
。
COALESCE(l.LiabilityPremium,0) + COALESCE(h.LiabilityPremium,0) as LiabilityPremium
我不确定这是否与此小数据集一致或是否符合预期,但如果总是希望@LiabilityPremium.LiabilityPremium
或@HiredPremium.LiabilityPremium
始终为null,那么在那里无需执行添加。而是直接在这两列上使用COALESCE
。
COALESCE(l.LiabilityPremium, h.LiabilityPremium) as LiabilityPremium
答案 1 :(得分:2)
COALESCE(l.LiabilityPremium,0) + COALESCE(h.LiabilityPremium,0) as LiabilityPremium
答案 2 :(得分:2)
那是因为
l.LiabilityPremium + h.LiabilityPremium
如果两者中的任何一个为NULL,则表达式为NULL。
此表达式应该可以解决
COALESCE(l.LiabilityPremium, 0.00) + COALESCE(h.LiabilityPremium, 0.00)