[英]conditional where clause SQLServer
我正在使用SQLServer 2008并遇到此问题。 我有一个功能,用户可以从菜单中选择多个日期。 他们还可以选择“选择所有日期”复选框。
如果他们选中该复选框,则我的查询应仅在给定日期返回结果。 因此执行WHERE子句。 如果他们没有选择复选框,而是选择了一个或多个日期; 该查询应使用where子句执行。
我有两个参数。 -SelectedDates(例如'2012-11-15','2012-11-15')-AllDates('X'或'')
通常,查询谁看起来像这样:
SELECT * FROM x
WHERE x.date in ([Param.1])
所以我的问题是:在不需要WHERE子句的情况下,如何调整查询。
仅供参考:[Param.1]符号用于我正在工作的环境中。
简单,使用OR子句,如果选中alldates,它将从所有日期返回数据,如下所示:
SELECT * FROM x
WHERE x.date in ([Param.1]) OR ([Param.2]) = 'X'
如果选中了Param.2('X'),它将忽略第一个条件的结果,因为您正在使用OR子句。
如果控件中存在所有日期,那么check all也会生成日期,因此您仍然可以使用WHERE IN('date1',....'dateN')
您也有这种选择
WHERE x.Date IN (.....) OR AllDates = 'X'
这里AllDates
是第二个参数,当用户选中“所有日期”复选框时
IF(AllDates is not null)
SELECT * FROM x
ELSE
SELECT * FROM x
WHERE x.date in ([Param.1])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.