8

2 つの日付の間のすべての週の開始日と終了日 (週) を取得し、それらの各週に挿入されたレコードの数を返すクエリを実行する必要があります。

declare @sDate datetime,
        @eDate datetime;

select  @sDate = '2013-02-25',
        @eDate = '2013-03-25';

--query to get all weeks between sDate and eDate

--query to return number of items inserted in each of the weeks returned



WEEK                  NoOfItems
-----------------------------------------
2013-02-25            5
2013-03-4             2
2013-03-11            7
4

2 に答える 2

13

再帰 CTE を使用して、日付のリストを生成できます。

;with cte as
(
  select @sDate StartDate, 
    DATEADD(wk, DATEDIFF(wk, 0, @sDate), 6) EndDate
  union all
  select dateadd(ww, 1, StartDate),
    dateadd(ww, 1, EndDate)
  from cte
  where dateadd(ww, 1, StartDate)<=  @eDate
)
select *
from cte

SQL Fiddle with Demoを参照してください。

次に、これをテーブルに結合して、追加の詳細を返すことができます。

于 2013-02-25T16:19:28.130 に答える