2

サードパーティ製品のSQLServer2008データベースで次のクエリを使用して、いくつかのレポートを生成します。

SELECT ROUND(SUM(Price),0,1) AS SumNetPrice FROM Transactions

例えば

 SUM(Price): 1.2345678
 ROUND(SUM(Price),0,1): 1

これはこれまで正常に機能し、小数点以下の桁数をすべて削除しました。実際、不思議なことに、ROUND関数のMSDN情報http://msdn.microsoft.com/en-us/library/ms175003.aspxに従って3番目のパラメーターを指定しなかった場合でも、結果は切り捨てられました。

サードパーティ企業は、Price列のデータ型を「real」からdecimal(22、7)に変更しました。残念ながら、これは、ROUND関数の切り捨てオプションを使用した場合でも、常に小数点以下7桁になることを意味します。だから今私は得る:

 ROUND(SUM(Price),0,1): 1.0000000

ROUND(expression、0,1)は結果を切り捨てて、小数点以下の桁数を取得しないようにするべきではありませんか?SQLクエリの結果からこれらの小数点以下の桁数を削除するにはどうすればよいですか?

4

2 に答える 2

2

以前と同じように機能させるには、タイプを10進数から実数に変換します。これが、目的の出力を取得するための更新されたクエリです。

select Cast(ROUND(SUM(Price),0,1) as Real) AS SumNetPrice FROM Transactions
于 2012-07-06T15:40:27.290 に答える
1
SELECT CAST(ROUND(SUM(Price),0,1) AS DECIMAL(22,0)) AS SumNetPrice FROM Transactions
于 2012-07-06T15:44:23.157 に答える