2013-01-07 3 views
3

주간 데이터 (시작일은 월요일)를 합계하기 위해 tsql을 사용합니다. 지난 주 2012 년과 2013 년의 경계에 걸쳐 지난 주에 두 주간 합계가 발생합니다. tsql 내에서 데이터를 그룹화하여 2012-12-31에서 2013-01-06로 주간 합계를 얻을 수 있습니까?TSQL에서 연도 경계를 기준으로 그룹화하는 방법

예 데이터와 SQL : http://sqlfiddle.com/#!6/52b25/13/0

아래 링크 없음 예. 가상 테이블에는 datetime 형식의 "created"컬럼이 있습니다. 매주 얼마나 많은 행이 있습니까? 두 개의 결과 행을 가져오고 싶습니다. 하나는 2012 년의 견실 한 주간이고 2013은 (2012 년 12 월 31 일 월요일에 시작하는) 주간에 시작하는 행입니다.

select 
min(created) as 'First Date', 
count(*) as 'Count', 
datepart(wk,created) as 'Week Number' 
from items 
group by datepart(wk,created), datepart(yy,created) 
order by min(created) 

답변

5

한 가지 해결 방법은 계산 주 번호를 수동으로

select 
min(created) as 'First Date', 
count(*) as 'Count', 
datediff(dd,'2012-01-02',created)/7 AS week_number 
from items 
group by datediff(dd,'2012-01-02',created)/7 -- You may replace '2012-01-02' to any date that is Monday (start day of the week) 
order by min(created) 
+0

이 나를 위해 작동합니다. 주에는 첫날로 표시되므로 주 번호는 필요하지 않습니다. 감사! –

관련 문제