2013-10-20 36 views
2

要在這裏回答我自己的問題,但我想發佈此信息以獲得一些關注,以防其他人遇到此問題。部門在SAP BusinessObjects數據服務中始終產生1或0

在BusinessObjects數據服務設計器中,我有兩個十進制(36,10)值,我想將其中一個除以一個。爲了解釋除以零的情況下,我必須先檢查,如果分母爲零,所以我結束了類似下面的ifthenelse聲明:

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

然而,當我執行我的工作,我總是得到0或1,而不是十進制值。

回答

2

正如我所說,我已經在這裏得到了答案,只是想爲社區提供這個。

一個ifthenelse語句很有意思,因爲它從第二個參數中獲取數據類型。在上面的代碼示例中,它假定正確的數據類型是參數「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) 
2

感謝這個,我以爲我會瘋!

順便提及,對於一些稍微簡單,這也適用:

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