這兩個查詢的結果應該是相同的。相同的數據。相同的公式。相同的演員。一個結果是在查詢中針對一個表變量計算的,而另一個結果是針對變量計算的。我用臨時表和永久表替換了表變量,並得到了相同的結果。SQL公式返回不一致精度
爲什麼我的結果不同?
DECLARE
@comm DECIMAL(20 , 6)
, @quantity INT
, @multiplier INT
, @price DECIMAL(38 , 10)
SET @comm = 210519.749988;
SET @quantity = 360000;
SET @multiplier = 1;
SET @price = 167.0791666666;
DECLARE @t AS TABLE
(
[comm] [decimal](38 , 6)
, [multiplier] [int]
, [Quantity] [int]
, [Price] [decimal](38 , 10)
)
INSERT INTO @t
VALUES
(@comm , @quantity , @multiplier , @price)
SELECT
@comm = comm
, @quantity = quantity
, @multiplier = multiplier
, @price = price
FROM
@t
SELECT
CAST(comm/quantity/multiplier/price AS DECIMAL(32 , 10))
FROM
@t
UNION ALL
SELECT
CAST(@comm/@quantity/@multiplier/@price AS DECIMAL(32 , 10));
結果
1. 0.0034990000
2. 0.0035000000
同樣的結果對不同的服務器。 SQL Server 2008 R2 Web Edition,Standard和Express以及SQL Server 2012 Standard。
您的輸出類型,他們並不都完全相等。我看到'@comm DECIMAL(20,6)''但[COMM] [十進制](38,6)' –