SELECT ステートメントは次のとおりです。
SELECT ROUND(ISNULL(SUM(Price),0),2) As TotalPrice
FROM Inventory
WHERE (DateAdded BETWEEN @StartDate AND @EndDate)
小数点以下2桁に丸められない理由について何か考えはありますか?
SELECT ステートメントは次のとおりです。
SELECT ROUND(ISNULL(SUM(Price),0),2) As TotalPrice
FROM Inventory
WHERE (DateAdded BETWEEN @StartDate AND @EndDate)
小数点以下2桁に丸められない理由について何か考えはありますか?
ROUND(ISNULL(SUM(Price),0),2)
あなたが試すことができる代わりにCAST(ISNULL(SUM(PRICE),0) AS DECIMAL (4,2))
Price のデータ型は何ですか?
SELECT ROUND(123.4545, 2); -- = 123.4500
GO
SELECT ROUND(123.45, -2); -- = 100,00
GO
基礎となるデータ型は同じままです。丸めるだけで、末尾のゼロを残します。
小数点以下 2 桁の出力の場合は、decimal(x, 2) にキャストする必要があります。
ご使用の環境で列のマーシャリングの問題が発生している可能性があります。明示的なキャスト CAST(ROUND(...) AS NUMERIC(18,4)) を試すか、単に 0 0.0 を作成してみてください。また、アプリケーションで適切なデータ型で列をバインドしていることも確認してください。
クールな人たちは皆、ISNULL の代わりに COALESCE を使用しています。COALESCE は移植性があり、必要な数のパラメーターを使用できます (2 つだけではありません!!)。
とにかく、これが単なる例かどうかはわかりませんが、この段階でまだ丸められていない場合、データに DA の問題が発生する可能性もあります。