使用 SQL Server 2008。我有一个存储过程,其中开始日期和结束日期作为日期范围的输入参数。
寻找一个singlesql 查询,其中在 where 子句中有一个开始日期和结束日期,可以处理日期均为空或都有值的两种情况。
我不想使用 IF 语句。
WITH limits AS
(
SELECT COALESCE(@startDate, MIN(mydate)) AS startDate, COALESCE(@endDate, MAX(mydate)) AS endDate
FROM mytable
)
SELECT m.*
FROM limits
JOIN mytable m
ON mydate BETWEEN startDate AND endDate
如果有索引,这将是最有效的mydate
,因为这个条件是可控制的并且将使用Index Seek
.
如果没有索引,则使用IFNULL
其他人提出的构造。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)