2016-05-26 3 views
-1

SQLの特定の値を合計し、別の値の合計で除算すると、10進数値が得られます。これらの値を.5または.10に最も近い値にすることを望んでいましたが、クエリを実行すると商は0になります。値を2で乗算して2で割ります。SQLの小数点を丸めるための正しい構文は何ですか

ROUND((SUM(SALESTAX)/SUM(NULLIF(TOTALCOST, 0))*2),0)/2 

RESULT 
0.000000 

単純に2で丸めると、丸められた値は得られますが、正しい値は得られません。

なぜ私のクエリがどのように書かれているかによって何かが増えていない限り、それが間違っているのか分かりません。

+1

2番目の合計にnullがある場合、このクエリは失敗します。 'NULLIF'を変更して0ではなく1にします。 – sagi

+0

SALESTAXとTOTALCOSTのデータ型は何ですか?私はあなたが[データ型の優先順位](https://msdn.microsoft.com/en-us/library/ms190309.aspx)の問題に遭遇している可能性があると思います。 – nscheaffer

+0

同じ種類の変数で列を置き換え、その動作を再現するスクリプトを投稿できますか? –

答えて

1

私はお客様の要件を正しく理解しています。ROUND機能に間違った価値があると思います。小数点以下第0位を四捨五入しているようです。私はあなたがこれをしたいと思う...

私はあなたが2で乗算を取り除くことができると同様に2で割ることができると思う。

+0

それだけです。ありがとう! – walangala

関連する問題