表中的记录包含一系列有效日期,例如: * tbl1.start_date *和* tbl1.end_date *。因此,为了确保我获得对特定日期范围有效的所有记录,选择逻辑为:<...> WHERE end_date >= @dtFrom AND start_date < @dtTo
(在SQL语句中使用的@dtTo参数实际上是计算的第二天在* @ prmDt_To *参数中使用的报告)。SSRS 2008 - 多个分组日期范围
现在在报告中,我需要计算指定数据范围内每一天的记录数,并包括没有有效记录的天数(如果有的话)。因此,检索到的记录可能在几个不同的日子里被计算。我可以用数据集中的递归CTE相对容易地做到这一点,但我的经验法则是避免SQL数据库中不必要的负载,而只返回必要的原始数据并让Report引擎处理分组。那么在SSRS中有没有办法做到这一点?
谢谢 谢尔盖
显然,递归CTE是一个痛苦的查询,仅仅几天的数据提取花费了将近20秒,这在开发此报告的环境中是不可接受的。如果我只提取日期范围的数据,而没有CTE,则执行时间不到2秒。这就是为什么我想要在报表设计器中使用它的机制。 – krysolov 2013-03-06 22:07:06
这部分将取决于您加入CTE的数据。尝试用临时表替换CTE以查看是否改变了性能。如果是这样,那么SQL为CTE选择了一个坏计划,但临时表应该是一个很好的解决方法。 另外,请确保您的表格上有适当的索引。 – 2013-03-07 00:56:06