0
요일에 이벤트가 처음 발생하고 요일에 이벤트가 마지막으로 발생한 시간을 기록하고 일주일을 포함하도록 보고서를 실행하는 쿼리를 실행해야합니다. 시스템에 기록 된 기록. 이것은 SQL2005 데이터베이스에 있지만, 처음 발생과 마지막 출현으로 범위를 좁히는 데 도움이되는 것을 찾지 못했습니다.첫날과 마지막 요일
요일에 이벤트가 처음 발생하고 요일에 이벤트가 마지막으로 발생한 시간을 기록하고 일주일을 포함하도록 보고서를 실행하는 쿼리를 실행해야합니다. 시스템에 기록 된 기록. 이것은 SQL2005 데이터베이스에 있지만, 처음 발생과 마지막 출현으로 범위를 좁히는 데 도움이되는 것을 찾지 못했습니다.첫날과 마지막 요일
-- 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