1

と の 2 つの日付がFromDateありToDateます。Start は常にMondayで、ToDate常にFridayです。

  • カウントするだけでなく、週数を個別に見つけたい。
  • 特定の日付範囲で週 1、週 2、週 3 などのレポートを表示したいと考えています。(つまり、週ごとの製品数)。

私はこれを試しました:

SELECT * FROM WeekDate
WHERE DATEDIFF(Week,GETDATE(),'2013-09-20')=0

週0だけでなく、すべての値を提供します。これについて誰か助けてもらえますか?

テーブル構造

CREATE TABLE [dbo].[WeekDate]
(
    [id] [int] IDENTITY(1,1) NOT NULL,
    [Counter] [int] NULL,
    [CDate] [datetime] NOT NULL
) ON [PRIMARY] 

データは

1   1   2013-09-17 00:00:00.000 
3   2   2013-09-18 00:00:00.000 
4   6   2013-09-19 00:00:00.000 
5   2   2013-09-23 00:00:00.000 
6   3   2013-09-24 00:00:00.000 
7   4   2013-10-01 00:00:00.000 
4

2 に答える 2

1

出力の例なしで言うのは難しいですが、次のようなものかもしれません:

select
    sum(Counter),
    datediff(day, @FromDate, CDate) / 7 as ddiff
from WeekDate
-- if you need to filter out rows
where CDate >= @FromDate and CDate <= @ToDate
group by datediff(day, @FromDate, CDate) / 7

sql fiddle demo

于 2013-09-17T06:10:01.327 に答える
0

週ごとの製品の合計が必要だと思います。もしそうなら、あなたが言ったようにこれを試してください。開始日を月曜日、終了日を金曜日としています

declare @StartDate datetime,
        @EndDate datetime;

select  @StartDate = '2013-09-16',
        @EndDate = '2013-10-04';

;with cte as
(
  select @StartDate StartDate, 
    DATEADD(wk, DATEDIFF(wk, 0, @StartDate), 6) EndDate
  union all
  select dateadd(ww, 1, StartDate),
    dateadd(ww, 1, EndDate)
  from cte
  where dateadd(ww, 1, StartDate)<=  @EndDate
)
select (Select COUNT(Cdate) from WeekDate where Cdate between StartDate and EndDate) count1 , StartDate , EndDate
from cte        
于 2013-09-17T06:06:39.107 に答える