티켓 정보가있는 테이블이있는 헬프 데스크 시스템이 있습니다. 나는 루프를 사용하지 않고 sql에서 반복적 인 데이터를 검색하는 방법은 무엇입니까?
ID status create_date closing_date
---------------------------------------------------------
1 closed 2015-01-01 14:06:30 2015-01-02 18:06:42
2 closed 2015-01-01 15:16:42 2015-01-02 08:12:10
- - - -
- - - -
지금 내가 지난 3 개월을 찾고 지난 5 주 만에 티켓을 닫습니다 촬영 시간의 수를 표시하려면,이 같은 데이터 뭔가 SQL 서버에서 테이블을 가지고있다.
예를 들어, 오늘부터 지난 5 주 동안의 데이터를 보여주고 싶습니다 (49,50,51,52,1). 그리고 매주 마지막 2 개월의 닫힌 티켓을 봐야합니다. (49 주 동안, 데이터는 주 49-60 일과 주 49 일 종료일 사이에 있어야합니다). 현재,이 같은 결과를 얻기 위해 루프를 사용했다
, 그것은 놨 때문에
다음과 같은 데이터를 반환declare @week_start datetime, @week_end datetime, @week int, @last_week int, @week_number int
set @last_week = datepart(wk, dateadd(wk, -1, getdate()))
set @week_number = dbo.F_ISO_WEEK_OF_YEAR(dateadd(wk, -5, getdate()))
set @week = @last_week - 4
set @week_start = dateadd(day, -60, dateadd(wk, -5, DATEADD(week, DATEDIFF(day, 0, getdate())/7, 4)))
set @week_end = dateadd(wk, -5, DATEADD(week, DATEDIFF(day, 0, getdate())/7, 4))
while @week <= @last_week
begin
select @week_number as week_number,
cast(avg(cast(Datediff(hour,create_date,closing_date) as decimal (10,2))) as decimal(10,2)) Hours
FROM tickets
where closing_date between @week_start
and @week_end
--group by dbo.F_ISO_WEEK_OF_YEAR(closing_date)
set @week_start = dateadd(wk, 1, @week_start)
set @week_end = dateadd(wk, 1, @week_end)
set @week = @week + 1
set @week_number = @week_number + 1
end
지금
week_number Hours
--------------------
49 121.56
50 129.06
51 125.57
52 125.90
53 130.52
, 나는 루프를 사용하지 않으 주 숫자를 올리고 ISO 주 번호를 표시하려고합니다. 그래서 여기
내 수정 된 코드,
select dbo.F_ISO_WEEK_OF_YEAR(closing_date) as week_number,
cast(avg(cast(Datediff(hour,create_date,closing_date) as decimal (10,2))) as decimal(10,2)) Hours
FROM tickets
where closing_datebetween DATEADD(wk, -5, getdate()) and DATEADD(wk, -1, getdate())
group by dbo.F_ISO_WEEK_OF_YEAR(closing_date)
입니다 그러나 그것은 특정 주에서 지난 2개월보고 아니에요으로 잘못 다음과 같은 데이터, 내가 할
week_number Hours
--------------------
49 142.69
50 262.76
51 95.50
52 85.39
1 75.90
을 반환 루프를 사용하지 않고도 동일한 결과를 얻으려면 내 쿼리를 어떻게 수정할 수 있습니까?
도움이 될 것입니다.
감사합니다.