SSRS报告具有增加时间间隔的参数

时间:2016-01-19 18:33:15

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

如何使用SSRS自动执行包含开始日期和结束日期的存储过程的报表。报告的运作方式是: - 第1次运行: - 1月1日至1月15日(开始日期1月1日结束日期DateAdd功能添加15天) 第二轮: - 1月1日至1月31日(如何动态编程结束日期) 第3次运行: - 1月1日至2月15日 第4次运行: - 1月1日至2月28日/ 29日 直到3月31日 3月之后,该季度发生变化,因此必须运行: - 第k次: - 4月1日至4月15日 等到7月季度变化如此, 第k次: - 7月1日至7月15日 等到季度再次变化10月 第k次:10月1日至10月15日 等等...

任何想法都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我终于通过创建一个将在SSRS中运行的新存储过程找到了一种方法。 此存储过程将根据季度条件提供其他存储过程“spCalculateSomething”所需的输入参数值:

CREATE PROC #CalculateData
(
@DateTo DATETIME,
@DateFrom DATETIME
)
AS
SELECT DATEDIFF(SECOND,@DateTo,@DateFrom) AS DataResult
GO

DECLARE @Count INT = (SELECT MIN(ID) FROM #DataTest)
DECLARE @DateToParam DATETIME
DECLARE @DateFromToParam DATETIME
WHILE @Count IS NOT NULL
BEGIN
    SET @DateToParam = (SELECT DateTo FROM #DataTest WHERE ID = @Count)
    SET @DateFromToParam = (SELECT DateFrom FROM #DataTest WHERE ID = @Count)

    EXEC #CalculateData @DateToParam, @DateFromToParam

    SET @Count = (SELECT MIN(ID) FROM #DataTest WHERE ID > @Count)

END
GO
DROP TABLE #DataTest
DROP PROCEDURE #CalculateData

这对于将结束日期延长至15天的上述问题的原因是因为即使你在第一季度运行,也就是说2月15日,3月31日的结束日期将不会影响我们的主要记录正在处理的表格将持续到2月15日。因此,根据运行月份的不同,我每天都可以按特定季度运行。