如何编写比较月末值的SSRS报告?

时间:2016-01-12 21:47:50

标签: sql-server reporting-services ssrs-2008-r2

我有一份SSRS(SQL Server 2008 R2)报告,该报告根据reportDate参数显示在特定时间点符合特定条件的项目的汇总信息。此报告用于计算月末值。

我需要扩展报告,以便根据numberOfMonths参数显示与之前(或后续)月份的比较。例如,对于reportDate=2015-01-01numberOfMonths=4,我希望得到一份报告,比较1月1日,2月1日,3月1日和4月1日的结果。

我认为我不能使用范围b / c某些符合条件的项目在该范围的某些部分可能在月末日期不符合。

我能想到的最好的比喻是一份增强现实报告,您可以根据客户对月末的未结发票进行汇总。在一个月内创建但在月末之前支付的发票不会显示在任何地方,但是1月15日创建并在3月15日支付的发票将包含在2月1日和3月1日列的总和中。

在SSRS中实现这一目标的最佳方法是什么?

1 个答案:

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