我有一份SSRS(SQL Server 2008 R2)报告,该报告根据reportDate
参数显示在特定时间点符合特定条件的项目的汇总信息。此报告用于计算月末值。
我需要扩展报告,以便根据numberOfMonths
参数显示与之前(或后续)月份的比较。例如,对于reportDate=2015-01-01
和numberOfMonths=4
,我希望得到一份报告,比较1月1日,2月1日,3月1日和4月1日的结果。
我认为我不能使用范围b / c某些符合条件的项目在该范围的某些部分可能在月末日期不符合。
我能想到的最好的比喻是一份增强现实报告,您可以根据客户对月末的未结发票进行汇总。在一个月内创建但在月末之前支付的发票不会显示在任何地方,但是1月15日创建并在3月15日支付的发票将包含在2月1日和3月1日列的总和中。
在SSRS中实现这一目标的最佳方法是什么?
答案 0 :(得分:0)
我无法找到原生的SSRS解决方案,因此使用循环遍历几个月的存储过程:
@reportDate datetime,
@numberOfMonths int
DECLARE @results TABLE
(
ID int,
Column2 nvarchar(50),
Column3 nvarchar(50),
)
-- get the end of month values for each month
WHILE @numberOfMonths > 0
BEGIN
DECLARE @date datetime
SET @date = DATEADD(month, DATEDIFF(month, 0, @reportDate) - @numberOfMonths + 2, 0)
INSERT INTO @results
SELECT ID, Column1, Column2
FROM MyTable
WHERE ConditionToIncludeInThisPeriod
SET @numberOfMonths -= 1
END