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

时间:2017-08-26 00:37:47

标签: date reporting-services

是否可以在两个日期之间返回所有月份; SSRS中的开始日期和结束日期表示矩阵。我目前的代码产生了以下12个月的滚动。

    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 个答案:

答案 0 :(得分:1)

您需要某种日期表。在最基本的情况下,您需要一个数字1-12的列表。然后,您可以根据该当月和当月建立日期。一旦你有一个日期列表,你就可以LEFT JOIN到你的主要数据,这将确保代表每个月,即使没有数据。

您可能希望将此作为永久性表格,但为了说明,这只是一个内联版本。

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每月一个日期

根据您要加入的数据,您可能需要格式化日期以匹配您的数据。如果您正在努力发布您的数据,我可以提供更有针对性的答案。