SSIS派生列转换表达式除数0错误
我在看Jax去年的这篇文章:在派生列ssis中的表达式中出现了零除,这似乎涵盖了我的问题,但Jax能够自己回答,并且没有提供答案。我想知道使用了什么方法来减少除数=0的错误 我的问题是这个表达式:ISNULL(TotalPayrollCost)?0:(ExcesCapacity*RouteVehicleCostAlloc)/TotalPayrollCost,我确认TotalPayrollCost在数据查看器中显示为0 我原以为将ISNULL和NULLIF结合使用会有一个解决方案,但我就是不能很好地实现这一点,而NULLIF在转换编辑器中不起作用。有什么建议吗SSIS派生列转换表达式除数0错误,ssis,Ssis,我在看Jax去年的这篇文章:在派生列ssis中的表达式中出现了零除,这似乎涵盖了我的问题,但Jax能够自己回答,并且没有提供答案。我想知道使用了什么方法来减少除数=0的错误 我的问题是这个表达式:ISNULL(TotalPayrollCost)?0:(ExcesCapacity*RouteVehicleCostAlloc)/TotalPayrollCost,我确认TotalPayrollCost在数据查看器中显示为0 我原以为将ISNULL和NULLIF结合使用会有一个解决方案,但我就是不能很好
提前谢谢 只有当
TotalPayrollCost
为空时,ISNULL逻辑才会处理(我知道这很令人震惊)。我假设,既然您提到isnull/nully,那么您希望将该值为0的相同逻辑设为null,那么您的表达式将变为null
(ISNULL(TotalPayrollCost) || TotalPayrollCost == 0) ? 0 : (ExcessCapacity * RouteVehicleCostAlloc) / TotalPayrollCost
这基本上读取如果总工资成本为空或者如果总工资成本为0,则返回零。否则,进行此计算当TotalPayrollCost为0时,结果应该是什么?非常感谢,很抱歉我没有立即回复您!因此,是的,ISNULL函数确实对我需要完成的任务产生了误导。我试着把它和NULLIF一起使用,但忘了把它拿出来。不过,让我看看这是否有效-看起来应该如此!完美的我只需要添加额外的“=”就可以了(ISNULL(TotalPayrollCost)| | TotalPayrollCost==0)?0:(超出容量*RouteVehicleCostAlloc)/TotalPayrollCost。我显然还在学习SSIS中的语法,这与编写SQL或使用MS Access等不同。再次感谢!!哦,不,我使用了模式
ISNULL(NULLIF(ColA,'SomeValue'),'SafeValue'))
来代替case语句。我还更正了这个表达式,因为您识别了我的作业=
,而不是评估=
错误;)