我们有许多 SSRS 报告设置需要在当月运行。 但是,我们公司使用 4-4-5 会计日历,因此典型的每月开始/结束日期与标准日历不一致。
例如,当前会计月的开始日期为 7 月 28 日,结束日期为 8 月 24 日。 目前,我们正在手动更新 SSRS 报告上的开始/结束日期,但我想在 SQL 中设置一些内容来识别应动态使用哪些日期。如果设置正确,当会计月份发生变化时,报告将开始使用新的开始/结束日期。
我们有一个现有的表,其设置如下:
日期 | 财政月 | 年份 |
---|---|---|
2024 年 7 月 27 日 | 7 月 24 日 | 2024 |
2024 年 7 月 28 日 | 8 月 24 日 | 2024 |
........ | ...... | ... |
2024 年 8 月 24 日 | 8 月 24 日 | 2024 |
2024 年 8 月 25 日 | 9 月 24 日 | 2024 |
因此,对于本月,我们希望检索 7 月 28 日(开始日期)和 8 月 24 日(结束日期)作为 SSRS 中的参数。
SQL 中的表非常基本,设置如下:
SELECT
FC.[Date],
FC.[Month],
FC.[Year]
FROM [DatabaseName$Fiscal Calendar] FC
我认为一种可能性是在表格中添加第四列,我们可以在其中放入一些文本或类似的内容来识别关键日期,但不确定这是否是最好的方法。 但如果它更容易,请也考虑将其作为答案的一个选项。
一旦我们有了有效的 SQL 脚本来识别开始日期和结束日期,那么就可以将它们带入 SSRS 报告中并用作默认日期参数的查询。
假设您
[Date]
列是真正的 Date
数据类型,并且这是 SQL Server,然后将数据集添加到报表中,该数据集仅根据当前日期获取开始和结束日期,例如
SELECT MIN(fc.[Date]) as StartDate, MAX(fc.[Date]) as EndDate
FROM [DatabaseName$Fiscal Calendar] fc
JOIN (SELECT [Month], [Year] FROM [DatabaseName$Fiscal Calendar] WHERE [Date] = CAST(GetDate() AS Date)) as tday
ON fc.[Month] = tday.[Month] and fc.[Year] = tday.[Year]
这里,子查询 (
tday
) 只是获取今天的行。然后我们将其连接回同年同月的日历表并获取最小值和最大值。
然后您可以使用它为报告参数提供默认值。
注意:理想情况下,月份开始和结束日期列将内置到您的日历表中,那么您就不需要此代码,特别是因为这似乎是一件常见的事情,使用所有这些信息预先构建日历表一次计算让生活变得更加轻松。