SQL Server совокупные значения с плавающей запятой - PullRequest
2 голосов
/ 27 мая 2011

HI Я получаю разные результаты при агрегировании значений с плавающей запятой.Запрос приведен ниже

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, я получу другую сумму.Я продолжаю получать разные суммы за разные промежутки времени, почему это происходит.Я ожидал бы, что результаты будут одинаковыми при каждом запуске запроса, который будет соответствовать запросу ниже. Выберите сумму (amt1) из таблицы 1

спасибо Бен

обновление: я использовал union all.спасибо за указание на это.это все еще дает мне другие результаты

1 Ответ

0 голосов
/ 27 мая 2011

Я подозреваю, что вы используете UNION, потому что на самом деле в ваших запросах есть две разные таблицы, например, table1 и table2. В этом случае вы не должны ожидать, что сумма будет одинаковой при изменении даты.

Обновление: Я только что заметил, что вы выбираете amt в одном запросе и amt1 в другом, поэтому нет оснований ожидать, что суммы будут такими же, как изменения даты.

...