SSRS 2008 - 日期范围的多个分组

时间:2013-03-06 16:31:36

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

表格中的记录包含一系列有效日期,例如: * tbl1.start_date *和* tbl1.end_date *。因此,为了确保获得对特定日期范围有效的所有记录,选择逻辑为:<...> WHERE end_date >= @dtFrom AND start_date < @dtTo(SQL语句中使用的 @dtTo 参数实际上是第二天计算的报告中使用的* @ prmDt_To *参数。)

现在,在报告中,我需要计算指定数据范围内每天的记录数,并包括没有有效记录的天数(如果有)。因此,检索到的记录可以在几个不同的日子里计算。我可以通过数据集中的递归CTE相对容易地完成它,但我的经验法则是避免SQL数据库上不必要的负载,而只返回必要的原始数据并让报表引擎处理分组。那么在SSRS中有没有办法做到这一点?

谢谢你, 塞吉

1 个答案:

答案 0 :(得分:1)

您可以使用自定义代码在SSRS中执行某些操作,但我建议不要使用它。执行此操作的位置在数据集中。 SSRS不是为了填充数据集中不存在的组。这听起来就像你想要做的那样:SSRS需要为每个日期创建组,无论该日期是否在数据集中。

如果您的数据库中没有数字或日期表,我只会创建一个递归CTE,其中包含您所感兴趣的范围内的每个日期的记录。然后将其连接到您的表格并使用COUNT(tbl1.start_date)查找相应的日期。这对SQL服务器的查询来说不应该太痛苦。

如果你真的需要避开CTE,那么我会创建一个日期或数字表来用来生成你范围内的日期。