2011-05-27 68 views
2

HI 我在聚合float值時得到不同的結果。查詢如下sql server聚合浮點值

declare @cy datetime 
set @d = '12/01/2010' 

select SUM(total) from (
select sum(amt1) as total from table1 
where date1 < @d 
union all 
select sum(amt1) as total from table1 
where date1 >= @d 
) as a 

amt1的數據類型爲float。

所以查詢只是聚合表table1中的列總數。 現在,如果我更改變量@d可以說'01/01/2010'我得到不同的數額。 我不斷收到不同的時間範圍 爲什麼會發生這種情況。我希望的結果是一樣的,每次我跑這將是從表1

感謝以下 選擇總和(AMT1)查詢匹配 本

更新查詢:我使用UNION ALL。感謝您指出。它仍然給我不同的結果

+0

我正在使用union all(錯過了我發佈的查詢中的內容)並仍然返回不同的值 – user55474 2011-05-27 19:59:13

+1

是第一個查詢中「amt1」和第二個中「amt」總和的錯字?否則,你可能會非常期待不同的結果。 – 2011-05-27 19:59:52

+0

你有沒有試過把你的浮標鑄造成更高精度的浮子(24)'我想? – 2011-05-27 20:02:07

回答

0

我懷疑你使用的是UNION,因爲你的查詢中實際上有兩個不同的表,例如table1table2。在這種情況下,當日期發生變化時,您不應該期望和數相同。

更新:我剛纔注意到,您在一個查詢,並在其他amt1選擇amt,所以沒有理由去期待的款項是相同日期的變化。

+0

我認爲他實際上正在做的是將表中的記錄按給定的日期分割(即,e之前的所有記錄和之後的所有記錄)。在這種情況下,假設返還相同的總額是公平的。 – 2011-05-27 19:55:37

+0

這就是正確的我分裂的記錄。我會假設無論日期範圍我給 – user55474 2011-05-27 19:58:25

+0

@ user55474看到我的更新,你都不會分裂它們,因爲你從兩個不同的列中選擇 – RedFilter 2011-05-27 19:59:14