Операторы SQL Server 2005, возвращающие одинаковые результаты - PullRequest
0 голосов
/ 21 сентября 2011

Почему эти два утверждения возвращают одинаковые результаты? Я смотрю на общее количество заказов и сумму цен на некоторые публикации. Первый оператор получает записи за последние 24 часа, а второй должен показывать те же суммы, но с начала месяца до текущей даты. Когда я смотрю на таблицы, которые они заполняют, кажется, что ОБА из них отображают суммы за последние 24 часа. Что-нибудь заметное?

SELECT pubName AS Publication, COUNT(*) AS Total, '$' + CONVERT(VARCHAR(12), SUM(CAST(price AS DECIMAL))) AS Price FROM [SecureOrders] WHERE DateTime >= DATEADD(day, -1, GETDATE()) GROUP BY pubName

SELECT pubName AS Publication, COUNT(*) AS Total, '$' + CONVERT(VARCHAR(12), SUM(CAST(price AS DECIMAL))) AS Price FROM [SecureOrders] WHERE DateTime >= DATEADD(DAY, 1-DAY(GETDATE()), DATEDIFF(DAY, 0, GETDATE())) GROUP BY pubName

Ответы [ 2 ]

0 голосов
/ 21 сентября 2011

Не уверен, зачем вам нужен пункт DateDiff. Может быть, я что-то упустил.

ВЫБЕРИТЕ pubName AS Публикация, COUNT (*) AS Итого, '$' + CONVERT (VARCHAR (12), SUM (CAST (цена AS DECIMAL))) AS Цена ОТ [SecureOrders] WHERE DateTime> = DATEADD (ДЕНЬ, 1-ДЕНЬ (GETDATE ()), GETDATE ()) GROUP BY pubName

Редактировать: Игнорировать вышесказанное, я был плотным (г).

0 голосов
/ 21 сентября 2011

Если один из них, как предполагается, был последние 24 часа, вы должны смотреть на часы.

SELECT
    pubName AS Publication
    ,COUNT(*) AS Total
    ,'$' + CONVERT(VARCHAR(12), SUM(CAST(price AS DECIMAL))) AS Price
FROM [SecureOrders] 
WHERE DateTime >= DATEADD(hh, -24, GETDATE())
GROUP BY pubName

В противном случае даты в обоих случаях совершенно хороши ... при условии, что столбец DateTime действительноDateTime Я бы проверил источники данных для сетки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...