2017-08-26 78 views
0

是否有可能在兩個日期之間返回所有月份;矩陣的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

您需要某種日期表。最基本的你需要一個數字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

根據您加入的數據,您可能需要格式化日期以符合您的數據。發佈你的數據,如果你正在掙扎,我可以給出更有針對性的答案。

相關問題