我编写了一个存储过程,它带回了一个数据集,如下所示:
Sales Office | Jan | Feb | Mar | Apr --- Continuing to EOYear and then a total
Office 1 Sales Amount in each Month.
Office 2
然后我在 SSRS 中有这个。
我只想显示数据集中所需的月份(通过参数选择(
例如。4月至6月将显示
Sales Office | Apr | May | June
Office 1 The figures for these months
Office 2
最佳解决方案是在存储过程中包含该参数,以便它仅返回实际要显示的数据:
CREATE PROCEDURE GetMyReport(@StartDate DATE, @EndDate DATE)
AS
SELECT *
FROM MyTable
WHERE CAST(TheDateTime AS DATE) >= @StartDate
AND CAST(TheDateTime AS DATE) <= @EndDate
然后,SSRS 中的查询需要具有这些参数 - 在查询中添加"@"符号后,SSRS 将自动为你创建参数,但你需要双击它们并将其更改为日期。
恕我直言,使用表值函数而不是存储过程更容易:只有在需要完成某些操作时才应使用 procs,而当您只是提取数据时,应使用 TVF。
很抱歉没有说我在 SPROC 中使用了带有变量的日期范围。
最后,我使用透视和案例语句组合修改了存储过程,这使我能够在日期范围(变量之间(内将 0 值和日期范围之外的所有值都设置为 NULL。
然后,我在 SSRS 中隐藏了 NULL 值列,并添加了"总计"作为最后一列,以使世界上任何地方的每个人都永远快乐。