我需要根据以下几点获取一组记录:
- 如果 (
startdate
andendate
不为 null 则opendate
应该在startdate
an之间d enddate
) 或 (closedate
应该在startdate
and之间enddate
) - 如果
startdate
不为空且enddate
为空则opendate = startdate
- 如果
startdate
为空enddate
且不为空,则closedate = enddate
- 如果两者都
startdate
为enddate
空,那么它应该检索所有数据
我使用下面的查询尝试了这个,但它只满足第 2 点到第 4 点。
Select * From CheckDateValues C
Where
1 = 1 and
C.OPenDate >= Case
When (@OpenDate IS NULL) THEN C.OpenDate Else @OpenDate
End
and
C.CloseDate <= Case
When (@CloseDate IS NULL) THEN C.CloseDate Else @CloseDate
End
我不确定如何编写查询以使第 1 点也能正常工作。