【发布时间】:2020-04-16 22:29:52
【问题描述】:
我有按周提取数据并将其组合在一起的查询。但我不显示没有任何数据的周。即使他们没有数据为空,我也想显示所有星期
如果有人可以帮我解决这个问题,那就太棒了
SELECT
DATEADD (week, datediff(week, 0, StartDate), -1) as 'WeekOf'
,DATEADD (week, datediff(week, 0, StartDate), +5) as 'to'
,DATEPART(wk, StartDate) as 'WeekNumber'
FROM [DESOutage].[dbo].[OPSInterruption]
Where StartDate > '2020-01-01' and EndDate <'2020-02-01'
Group by DATEADD (week, datediff(week, 0, StartDate), -1),DATEPART(wk, StartDate),DATEADD (week, datediff(week, 0, StartDate), +5)
***************输出*************** 如您所见,由于没有返回数据,因此缺少第 2 周和第 4 周。我仍然希望在输出中看到第 2 周和第 4 周,结果可能为 0。
WeekOf 到 WeekNumber 2019-12-29 00:00:00.000 2020-01-04 00:00:00.000 1 2020-01-12 00:00:00.000 2020-01-18 00:00:00.000 3 2020-01-26 00:00:00.000 2020-02-01 00:00:00.000 5
【问题讨论】:
-
您可能还需要
>=与StartDate进行比较。 -
这里(和其他地方)已经被反复询问和回答。建议的链接显示了几种方法,但简短的回答是,您需要从日历表、数字表或 CTE 或子查询生成要加入的日期列表临时基础。
标签: tsql