首先,您应该创建您要创建报告的期间的每日记录。
为此,您可以创建一个表作为“日历表”。
CREATE TABLE dbo.CalendarTable
(
Date datetime NOT NULL,
DayWeekNumber nvarchar(50) NULL
) ON [PRIMARY]
GO
ALTER TABLE dbo.CalendarTable ADD CONSTRAINT
PK_CalendarTable PRIMARY KEY CLUSTERED
(
Date
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
Go
之后你应该像这样填写日历表:
Truncate Table CalendarTable
Declare @FromDate as datetime , @ToDate as datetime, @counter as int , @DateRecord as int,
@Date as Datetime
Set @FromDate = '2020-03-21'
Set @ToDate = '2021-03-21'
Set @Counter = 1
Set @DateRecord = dateDiff(D,@FromDate, @ToDate)
While (@Counter <=@DateRecord)
BEGIN
Insert Into CalendarTable (Date,DayWeekNumber)
Select DateAdd(d,@Counter,@FromDate),DATEPART(dw,DateAdd(d,@Counter,@FromDate))
Set @Counter += 1
END
最后将它与您的出现表连接起来
Select Date,(Select Count(*) From occurrencesTable Where started_at_cst>= CalendarTable.Date
and ended_at_cst<= CalendarTable.Date ) as NumberOfOccurence from CalendarTable