2014-10-28 2 views
0

У меня есть таблица, которая включает статистику для каждой рекламы Рекламодателей в нашей системе с помощью добавления даты и времени. Данные обновляются ежечасно, поэтому для каждого пользовательского объявления мы имеем данные о показах в час.SQL Get Last DateTime для каждого дня

Я хочу иметь возможность запуска SQL-запроса, который извлекает последний час для каждого объявления за каждый день.

Запрос теперь у меня есть, только извлекает последний период ввода ... как его изменить, чтобы извлечь последнюю запись для каждого объявления для рекламодателя, чтобы вычислить общее количество показов за этот день ....

DECLARE @adid INT 
SET @adid = 596749 

SELECT t1.* 
FROM stats t1 
WHERE t1.dateadded = (
    SELECT max(dateadded) 
    FROM stats t2 
    WHERE t1.name = t2.name 
) AND advertiserID = @adid 

Любая помощь приветствуется !!!!

ответ

0

Использование ROW_NUMBER():

;WITH CTE AS 
(
    SELECT *, 
      RN = ROW_NUMBER() OVER(PARTITION BY CONVERT(VARCHAR(8),dateadded,112) 
            ORDER BY dateadded DESC) 
    FROM dbo.[stats] 
    WHERE advertiserID = @adid 
) 
SELECT * 
FROM CTE 
WHERE RN = 1;