我有一個總價值,我需要幾行中分配的SQL表:如何在T-SQL劃分過程中克服舍入錯誤?
DECLARE @total numeric(38,5);
DECLARE @count int;
SET @total=123.10000
SET @count = SELECT COUNT(*) FROM mytable WHERE [email protected];
-- let's say @count is now 3
UPDATE mytable SET [email protected]/@count WHERE [email protected];
--each record now has 41.03333
SELECT SUM(my_part) FROM mytable where condition = @val;
-- the sum is 123.09999, not my original 123.10000
顯然,原來總不是均勻地被3整除,因此SUM將不匹配原始值。不管我用什麼尺度,都會有可能出現這樣的分歧,無法恢復。
我想要的是UPDATE行之一將包含41.03334,其他兩個將有41.03333。我不在乎哪些是圍繞着哪一個輪迴。但我關心的是,價值可以重新總結,以獲得最初的總和。這可能嗎?有沒有已知的算法來做這種事情?
我能想到的唯一解決方案是不是很優雅 - 喜歡重新選擇的總和,從減原始金額,然後將餘數隨機添加到其中一行。 – 2009-10-26 18:59:52