首页 > 解决方案 > 在 SSRS 中使用日期选择器中的值

问题描述

我有一个 SSRS 报告,它有两个可以为空的日期选择器参数——开始日期和结束日期。

在我的查询中,我想选择这些日期之间的值,或者如果任一日期(或两者)为空。

我试过了:

WHERE ... AND (StartDateTime >= @FromDateTime OR his.StartDateTime is null) AND (EndDateTime <= @ToDateTime OR EndDateTime is null)

以及对此的变化,但我无法让它发挥作用。我正在考虑编写一个存储过程来使用临时表执行此操作,但想看看在我的 where 子句中是否有一种简单的方法来执行此操作。

标签: sqlsql-serversql-server-2008reporting-services

解决方案


这里有几种可能的情况。

您希望参数是可选的

这通常称为厨房水槽查询。

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)

推荐阅读