SSIS派生列除以零

时间:2015-05-12 17:46:58

标签: ssis

dFuelCharge大部分为零

如何在除以零时绕过错误?

表达

(dFuelCharge / (dShipCharge + dAccCharge))

制作新列dFuelRate

2 个答案:

答案 0 :(得分:1)

使用NULLIF运算符,如果得到除以零的问题,则将其默认为0.

答案 1 :(得分:1)

dFuelCharge的值不会导致除以零错误。

dShipCharge + dAccCharge为零时,您需要做的是确定应该的结果是什么?

  • 燃油费是燃油费吗?

您可能需要使用三元运算符?:将其作为Some testtrue expressionelse expression读取。

(
    dFuelCharge 
    / 
    (
        (dShipCharge + dAccCharge) == 0
        ? 1.0 
        : (dShipCharge + dAccCharge)
    )
)

为了清楚起见,我将表达式分成多行,但你可以看到完整的表达式是燃油费用除以:1,如果船舶和acc费用的总和为零;否则,除以船舶和收费之和。

请注意我使用1.0导致浮点除法(有余数)。如果您想要基于整数的除法(截断十进制值),请使1

  • 燃油率未知吗?

当没有提供船舶和/或收费时,他们可能不想记录费率。这是糟糕的数据,所以留空。正如@rvphx所指出的,这种方法使用NULLIF(a, b)运算符。请将其读作if a matches b, return null. Otherwise, return a

(dFuelCharge / NULLIF((dShipCharge + dAccCharge),0)