2017-05-12 10 views
0

いくつかの集計データを取得するために以下のクエリを実行しています。丸めがうまくいかず、丸めがうまくいかず、小数点以下10桁が表示される行があります。選択した列のデータ型がintegerであり、データが正しい場合は、問題の解決に役立たせてください。Dashdbラウンドの問題

Select 
round( 
DOUBLE(sum(IDEAL_CYCLE_TIME)) * DOUBLE(sum(PARTS_PRODUCED_COUNT)) 
/DOUBLE(sum(RUNNING_TIME_COUNT))*100, 
2) as value 
From PERFORMANCE_AGGR_MONTH_FACT 
Where ORG_DIM='O1' AND MONTH_NUMBER BETWEEN 1 AND 10 

答えて

1

私は行動が実数の近似値であるデータ型DOUBLE、に番号をキャストするためにあなたの選択の結果であると考えています。したがって、組み込みのROUND関数は、あなたが観察しているような "予期しない"結果を返すことがあります。例えば、

SELECT ROUND((DOUBLE(1) * DOUBLE(1))/DOUBLE(1)*100, 2) FROM SYSIBM.SYSDUMMY1 

私の環境では100.00000000000001が返されます。

代わりにデータ型DECIMALを使用できますか?