我在SSRS中有一些预设日期参数('上周','两周前'等)。我想还有一个'All'参数,它将忽略where子句中的忽略where子句中的DATETIME参数
并返回所有内容,而不管日期。
我试图建立一些动态SQL,但整体查询与许多工会相当大,并成为一个混乱本身。有没有办法在这里构建一个案例陈述来简化我想要实现的目标?
我在SSRS中有一些预设日期参数('上周','两周前'等)。我想还有一个'All'参数,它将忽略where子句中的忽略where子句中的DATETIME参数
并返回所有内容,而不管日期。
我试图建立一些动态SQL,但整体查询与许多工会相当大,并成为一个混乱本身。有没有办法在这里构建一个案例陈述来简化我想要实现的目标?
作为替代SeanLange的建议,更可扩展的,你可以这样做:
AND createdon BETWEEN ISNULL(@FromDate, createdon) AND ISNULL(@ToDate, createdon)
然后忽略这些参数中的一个或两个,简单地传递NULL
在createdon
之间的比较。本身总是成功的,所以这个条款永远是真的。
感谢您的反馈意见。今天是我第一天能够测试你的解决方案,并验证它的工作原理。我的报告是按照SeanLange的建议去设计的。再次感谢。 – mrbungle 2015-02-25 15:54:39
只需添加一个“OR @All = 1”或您正在使用的任何指示您想要的所有行。 – 2015-02-23 22:11:50
尽量避免在datetime之间使用'between',因为您可以轻松创建缺少任何有时间的最后一天(= @ToDate)的行的错误,例如, != '00:00' – 2015-02-23 22:14:13
@SeanLange,非常感谢,这么简单但却逃脱了我,感谢你的快速回应。如果您将其添加为答案,我将对其进行投票。 – mrbungle 2015-02-23 22:18:22