SSRS显示一年中没有数据的所有月份

问题描述:

是否有可能在两个日期之间返回所有月份;矩阵的SSRS中的开始日期和结束日期。我目前的代码在12个月的滚动期内产生以下结果。SSRS显示一年中没有数据的所有月份

Sept '16 Dec '16 Jan '17 Feb '17 Mar '17 Apr '17 May'17 Jun '17 Aug '17 
Shift  
Day   
Evening 
Night 

我想结果是在12个月的开始日期和结束日期之间。

 Sept '16 Oct'16 Nov'16 Dec'16 Jan'17 Feb'17 Mar '17 Apr '17 May'17 Jun '17 Aug '17 
Shift  
Day   
Evening 
Night 

您需要某种日期表。最基本的你需要一个数字1-12的列表。然后,您可以根据该日期和当前月份来建立日期。一旦你有一个日期列表,你可以左键加入你的主要数据,这将确保每个月都有代表,即使没有数据。

你可能会想有这个作为一个永久表,但是这仅仅是一个在线版本说明起见..

DECLARE @m TABLE (MonthNum int) 
INSERT INTO @m 
VALUES 
(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12) 

DECLARE @curMonth int = Month(getdate()) 
DECLARE @curYear int = Year(getdate()) 

SELECT 
* 
, DATEADD(year, (CASE WHEN MonthNum > @curMonth THEN (@curYear-1) ELSE @curYear END)-1900, DATEADD(month, MonthNum-1, DATEADD(day, 0, 0))) as Last12Months 
FROM @m 

这会给你从2016-每月一次约会09-01至2017-08-01

根据您加入的数据,您可能需要格式化日期以符合您的数据。发布你的数据,如果你正在挣扎,我可以给出更有针对性的答案。