首页 > 解决方案 > 对 2 个日期字段使用 WHERE 子句以及 Between 和 NULL 参数

问题描述

在 SSRS 报告中使用参数和 SQL

@FromDate 和 @ToDate 可以为 null -- 获取所有 4 条记录

@Fromdate 可以有一个日期值,而 @ToDate 为空 - 如果是这种情况,需要获取所有没有 TravelTo Date 的日期值

@Fromdate 和 @todate 有值然后需要获取最后 2 条记录

@FromDate 和 @ToDate 为 null 然后需要获取所有值

我使用下面的代码来获取数据,但我没有得到正确的数据,任何建议都值得赞赏。

哪里(在@FROMSTART 和@TODATE 之间的TravelTo)

或(@TODATE 为空且 TravelFrom >=@FROMSTART )

或(@FROMSTART 为空且 TravelFrom <=@TODATE)

或(@FROMSTART 为空且@TODATE 为空)

在此处输入图像描述

SSRS 的参数截图

在此处输入图像描述

标签: tsqlssrs-2008

解决方案


假设日期输入或列本身可能是NULL,您可以尝试:

SELECT *
FROM yourTable
WHERE
    (@FROMSTART > TravelFrom OR @FROMSTART IS NULL OR TravelFrom IS NULL) AND
    (@TODATE < TravelTo OR @TODATE IS NULL OR TravelTo IS NULL);

NULL如果列具有值或输入具有值,则此逻辑将折扣日期范围的开始或结束NULL


推荐阅读