Первое и последнее время дня - PullRequest
0 голосов
/ 20 апреля 2011

Мне нужно выполнить запрос, чтобы отсортировать записи в первый раз, когда событие происходит в течение дня, и в последний раз, когда событие происходит в течение дня, и запустить отчет, чтобы включить в систему неделю записанной истории. Это в базе данных SQL2005, но я не нашел ничего, что могло бы помочь мне сузить круг до первого вхождения и последнего вхождения.

1 Ответ

1 голос
/ 20 апреля 2011
-- Test data in table @T
declare @T table(id int, dt datetime)
insert into @T values (1, '2011-01-01T10:00:00')
insert into @T values (2, '2011-01-01T11:00:00')
insert into @T values (3, '2011-01-01T12:00:00')
insert into @T values (4, '2011-01-02T20:00:00')
insert into @T values (5, '2011-01-02T21:00:00')
insert into @T values (6, '2011-01-02T22:00:00')

-- First day of interval to query
declare @FromDate datetime = '2011-01-01'
-- Add 7 days to get @ToDate
declare @ToDate datetime = dateadd(d, 7, @FromDate)

;with cte as 
(
  select *,
    row_number() over(partition by datediff(d, T.dt, 0) order by T.dt) as rnMin,
    row_number() over(partition by datediff(d, T.dt, 0) order by T.dt desc) as rnMax
  from @T as T
  where T.dt >= @FromDate and T.dt < @ToDate
)
select C.id, C.dt
from cte as C
where C.rnMax = 1 or C.rnMin = 1
order by C.dt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...