SQL Server で次のバグ (または機能) に遭遇しました。
SUM (*column*)
where column
has typeを使用して、numeric(18, 8)
それを他の数値 (整数または小数) に乗算すると、結果の精度は に減少しnumeric(18, 6)
ます。
以下は、デモ用のサンプル スクリプトです。
CREATE TABLE #temp (Qnty numeric(18,8))
INSERT INTO #temp (Qnty) VALUES (0.00000001)
INSERT INTO #temp (Qnty) VALUES (0.00000002)
INSERT INTO #temp (Qnty) VALUES (0.00000003)
SELECT Qnty, 1*Qnty
FROM #temp
SELECT (-1)*SUM(Qnty), SUM(Qnty), -SUM(Qnty), SUM(Qnty) * CAST(2.234 as numeric(18,8))
FROM #temp
DROP TABLE #temp
2 番目の SELECT クエリの結果
0.000000 0.00000006 -0.00000006 0.000000
ご覧のとおり、SUM を乗算すると、結果は 0.000000 になります。
誰かが奇妙な振る舞いを説明できますか?
アップデート。2000、2005、および 2008 SQL Server の SQL Management Studio でこのクエリを実行しました。