我有一個表將字段的數據類型設置爲float。給定記錄集的值應該給出1的總和,並且select中的字段返回1,然而,HAVING子句另有說明。SQL Server浮點數的總和應爲1,但過濾器的值爲0
下面是我在表格中的確切值,正如你所看到的,這個例子也是一樣的。爲什麼總和超過1?我搞不清楚了!
with example as (
SELECT 'Code' as Code, cast(0.462 as float) as perc
UNION ALL
SELECT 'Code' as Code, cast(0.116 as float) as perc
UNION ALL
SELECT 'Code' as Code, cast(0.181 as float) as perc
UNION ALL
SELECT 'Code' as Code, cast(0.053 as float) as perc
UNION ALL
SELECT 'Code' as Code, cast(0.188 as float) as perc
)
SELECT
Code,
SUM(perc)
FROM
example
GROUP BY Code
HAVING SUM(perc) > 1
你使用'float'而不是'decimal'的任何原因?浮點數字會帶來這種問題。請參閱[浮點趣味](http://blogs.msdn.com/b/khen1234/archive/2005/05/13/417153.aspx) – 2012-03-19 20:26:21
*'這裏是我的表格中的確切值'* - 這就是你錯了的地方:只要你將它們轉換成「浮動」或「真實」,它們就會停止準確。 – 2012-03-19 20:33:30
謝謝大家。你的迴應很有啓發。德姆斯,那根本不是光顧的。我讀了更多關於這個主題並且現在理解它。謝謝 – 2012-03-23 01:24:08