我正在查看去年Jax发布的这篇文章:在派生列ssis中的表达式中出现了零,这似乎涵盖了我的问题,但Jax能够自己回答并且没有提供答案。我想知道用什么方法来减轻Divisor = 0错误。
我的问题是这个表达式:ISNULL(TotalPayrollCost)? 0 :( ExcessCapacity * RouteVehicleCostAlloc)/ TotalPayrollCost我确认TotalPayrollCost在数据查看器中显示为0。
我认为会有一个使用ISNULL和NULLIF的解决方案,但我不能完全解决这个问题,而且NULLIF在转换编辑器中不起作用。有什么建议吗?
提前致谢!
答案 0 :(得分:3)
ISNULL逻辑仅在TotalPayrollCost
为NULL时处理(令人震惊,我知道)。我假设你提到isnull / nullif你想要将该值为0的相同逻辑作为null,这样你的表达式就会变成
(ISNULL(TotalPayrollCost) || TotalPayrollCost == 0) ? 0 : (ExcessCapacity * RouteVehicleCostAlloc) / TotalPayrollCost
基本上读取如果总工资成本为空或者工资总成本为0,则返回零。否则,请执行此计算