2

ここで私自身の質問に答えるつもりですが、他の誰かがこれに出くわした場合に備えて、注意を引くためにこれを投稿したいと思いました.

BusinessObjects Data Services Designer 内に 2 つの decimal(36, 10) 値があり、1 つを別の値で除算したいと考えています。ゼロ除算の状況を説明するために、まず分母がゼロかどうかを確認する必要があるため、次のような ifthenelse ステートメントになります。

ifthenelse(Query.Denominator = 0, 0, Query.Numerator / Query.Denominator)

ただし、ジョブを実行すると、10 進数ではなく常に 0 または 1 になります。

4

2 に答える 2

2

ありがとうございます!

ちなみに、もう少し単純なものでは、これも機能します。

ifthenelse(Query.Denominator = 0, 0.0, Query.Numerator / Query.Denominator)

于 2015-07-16T03:12:36.790 に答える
2

そして、私が言ったように、私はすでにここで答えを持っていました.これをコミュニティに提供したかっただけです.

ifthenelse ステートメントは、2 番目のパラメーターからデータ型を取得するという点で興味深いものです。上記のコード例では、正しいデータ型がパラメーター "0" のデータ型であり、たまたま整数であると想定しています。

ifthenelse が「else」から値を受け取ると、それを整数に変換します。したがって、0.356 の値は 0 になり、0.576 は 1 になります。

トリックは、「0」を小数 (36, 10) にキャストすることです。

ifthenelse(Query.Denominator = 0, cast(0, 'Decimal(36, 10)'), Query.Numerator / Query.Denominator)
于 2013-10-20T15:47:06.180 に答える