Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SSIS派生列转换表达式除数0错误_Ssis - Fatal编程技术网

SSIS派生列转换表达式除数0错误

SSIS派生列转换表达式除数0错误,ssis,Ssis,我在看Jax去年的这篇文章:在派生列ssis中的表达式中出现了零除,这似乎涵盖了我的问题,但Jax能够自己回答,并且没有提供答案。我想知道使用了什么方法来减少除数=0的错误 我的问题是这个表达式:ISNULL(TotalPayrollCost)?0:(ExcesCapacity*RouteVehicleCostAlloc)/TotalPayrollCost,我确认TotalPayrollCost在数据查看器中显示为0 我原以为将ISNULL和NULLIF结合使用会有一个解决方案,但我就是不能很好

我在看Jax去年的这篇文章:在派生列ssis中的表达式中出现了零除,这似乎涵盖了我的问题,但Jax能够自己回答,并且没有提供答案。我想知道使用了什么方法来减少除数=0的错误

我的问题是这个表达式:ISNULL(TotalPayrollCost)?0:(ExcesCapacity*RouteVehicleCostAlloc)/TotalPayrollCost,我确认TotalPayrollCost在数据查看器中显示为0

我原以为将ISNULL和NULLIF结合使用会有一个解决方案,但我就是不能很好地实现这一点,而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语句。我还更正了这个表达式,因为您识别了我的作业
=
,而不是评估
=
错误;)