2015-02-23 101 views
0

我在SSRS中有一些预设日期参数('上周','两周前'等)。我想还有一个'All'参数,它将忽略where子句中的忽略where子句中的DATETIME参数

并返回所有内容,而不管日期。

我试图建立一些动态SQL,但整体查询与许多工会相当大,并成为一个混乱本身。有没有办法在这里构建一个案例陈述来简化我想要实现的目标?

+6

只需添加一个“OR @All = 1”或您正在使用的任何指示您想要的所有行。 – 2015-02-23 22:11:50

+0

尽量避免在datetime之间使用'between',因为您可以轻松创建缺少任何有时间的最后一天(= @ToDate)的行的错误,例如, != '00:00' – 2015-02-23 22:14:13

+0

@SeanLange,非常感谢,这么简单但却逃脱了我,感谢你的快速回应。如果您将其添加为答案,我将对其进行投票。 – mrbungle 2015-02-23 22:18:22

回答

1

作为替代SeanLange的建议,更可扩展的,你可以这样做:

AND createdon BETWEEN ISNULL(@FromDate, createdon) AND ISNULL(@ToDate, createdon)

然后忽略这些参数中的一个或两个,简单地传递NULLcreatedon之间的比较。本身总是成功的,所以这个条款永远是真的。

+0

感谢您的反馈意见。今天是我第一天能够测试你的解决方案,并验证它的工作原理。我的报告是按照SeanLange的建议去设计的。再次感谢。 – mrbungle 2015-02-25 15:54:39