組み込みのDATE_PARTウィークを試しましたか?それを使用できますか?
SELECT DATEPART( WEEK , 'May 2, 2012')
http://www.sqlfiddle.com/#!3/e93ae/2
再:
ここでの週番号は、この範囲内でフェッチしている最初のレコードの1から開始する必要があります。これは通常のカレンダーの週番号ではありません
これを試して:
SELECT
z.filter_date, x.d,
(datediff(day,z.filter_date, x.d) / 7) + 1 as week_number
from x
cross join (select convert(date,'march 7, 2012') as filter_date) as z
where x.d >= z.filter_date
データ:
create table x(i int identity(1,1) primary key, d date);
insert into x(d) values
('February 2, 2012'),
('February 5, 2012'),
('March 7, 2012'),
('April 8, 2012'),
('May 9, 2012'),
('June 9, 2012');
出力:
FILTER_DATE D WEEK_NUMBER
2012-03-07 2012-03-07 1
2012-03-07 2012-04-08 5
2012-03-07 2012-05-09 10
2012-03-07 2012-06-09 14
ライブテスト:http ://www.sqlfiddle.com/#!3 / e4837 / 12