将WHERE子句与Between和NULL参数用于2个日期字段

问题描述 投票:0回答:3

在SSRS报表中使用参数和SQL

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

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

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

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

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

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

或(@TODATE IS NULL和TravelFrom> = @ FROMSTART)

OR(@FROMSTART为空,且TravelFrom <= @ TODATE)

OR(@FROMSTART为空,@ TODATE为空)

enter image description here

来自SSRS的Parmater屏幕截图

enter image description here

tsql ssrs-2008
3个回答
0
投票

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


0
投票
SELECT * 
FROM TABLE1
WHERE ((@FROMSTART IS NULL AND @TODATE IS NULL)
OR(@FROMSTART IS NULL AND TravelTo <=@TODATE)
OR(@TODATE IS NULL AND TravelFrom >=@FROMSTART)
OR(TravelFrom >= @FROMSTART AND TravelTo<=@TODATE))

0
投票

我认为问题是第二个条件

© www.soinside.com 2019 - 2024. All rights reserved.