sql - 在 SSRS 中使用日期选择器中的值
问题描述
我有一个 SSRS 报告,它有两个可以为空的日期选择器参数——开始日期和结束日期。
在我的查询中,我想选择这些日期之间的值,或者如果任一日期(或两者)为空。
我试过了:
WHERE ... AND (StartDateTime >= @FromDateTime OR his.StartDateTime is null) AND (EndDateTime <= @ToDateTime OR EndDateTime is null)
以及对此的变化,但我无法让它发挥作用。我正在考虑编写一个存储过程来使用临时表执行此操作,但想看看在我的 where 子句中是否有一种简单的方法来执行此操作。
解决方案
这里有几种可能的情况。
您希望参数是可选的
这通常称为厨房水槽查询。
WHERE <some conditions>
AND (StartDateTime >= @FromDateTime OR @FromDateTimeis null)
AND (EndDateTime <= @ToDateTime OR @ToDateTime is null)
您将需要阅读一些关于此的博客。
您的 StartDateTime 和 EndDateTime 为 NULLABLE
在这种情况下,您希望将NULL
参数与NULL
日期进行比较
WHERE <some conditions>
AND (StartDateTime >= @FromDateTime OR (@FromDateTime is null and StartDateTime is null))
AND (EndDateTime <= @ToDateTime OR (@ToDateTime is null and EndDateTime is null))
您希望将可选参数逻辑应用于数据,而不是参数
这基本上是你已经拥有的,这就是为什么我不希望它是你想要的。
WHERE <some conditions>
AND (StartDateTime >= @FromDateTime OR StartDateTime is null)
AND (EndDateTime <= @ToDateTime OR EndDateTime is null)
推荐阅读
- mysql - 数据库表设计:在同一个表中分组或创建子表并加入
- html - 如何使用新列表重新加载组件?
- c# - PowerShell 管道卡住
- javascript - 刷新验证码,也刷新整个注册表
- android - 循环设置通知,直到用户单击
- javascript - Internet Explorer 11 在 XmlHttpRequest-POST 期间始终发送 Cache-Control-header
- altium-designer - 库组件注释/指示符的可见属性如何工作?
- reactjs - React Native 打开一个活动
- jquery - 禁用 JQuery barrating 星级插件悬停和点击效果
- ruby-on-rails - 为什么枚举不像文档中所宣传的那样工作?