2011-04-19 4 views
0

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

답변

1
-- 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