Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
条件where子句SQLServer_Sql_Sql Server_Where - Fatal编程技术网

条件where子句SQLServer

条件where子句SQLServer,sql,sql-server,where,Sql,Sql Server,Where,我在使用SQLServer2008时遇到了这个问题。我有一个功能,用户可以从菜单中选择多个日期。他们还可以选择勾选复选框“选择所有日期” 如果他们选中复选框,我的查询应该只返回给定日期内的结果。因此,执行WHERE条款。 如果他们没有选择复选框,而是选择了一个或多个日期;查询应使用where子句执行 我有两个参数。 -选定日期(如“2012-11-15”、“2012-11-15”) -所有日期('X'或') 通常查询如下所示: SELECT * FROM x WHERE x.date in ([

我在使用SQLServer2008时遇到了这个问题。我有一个功能,用户可以从菜单中选择多个日期。他们还可以选择勾选复选框“选择所有日期”

如果他们选中复选框,我的查询应该只返回给定日期内的结果。因此,执行WHERE条款。 如果他们没有选择复选框,而是选择了一个或多个日期;查询应使用where子句执行

我有两个参数。 -选定日期(如“2012-11-15”、“2012-11-15”) -所有日期('X'或')

通常查询如下所示:

SELECT * FROM x
WHERE x.date in ([Param.1])
SELECT * FROM x
WHERE x.date in ([Param.1]) OR ([Param.2]) = 'X'
所以我的问题是:如果不需要WHERE子句,我如何调整查询


仅供参考:在我工作的环境中使用[Param.1]符号。

此处
AllDates
是第二个参数,当用户选中所有日期的复选框时

IF(AllDates is not null)
SELECT * FROM x
ELSE
SELECT * FROM x
WHERE x.date in ([Param.1])

这里
AllDates
是第二个参数,当用户选中所有日期的复选框时

IF(AllDates is not null)
SELECT * FROM x
ELSE
SELECT * FROM x
WHERE x.date in ([Param.1])

如果控件中存在所有日期,则“全选”也可以生成日期,这样您仍然可以使用WHERE in('date1','dateN'))

你也有这个选择

WHERE x.Date IN (.....) OR AllDates = 'X'

如果控件中存在所有日期,则“全选”也可以生成日期,这样您仍然可以使用WHERE in('date1','dateN'))

你也有这个选择

WHERE x.Date IN (.....) OR AllDates = 'X'

简单地说,使用OR子句,如果选中alldates,它将返回所有日期的数据,如下所示:

SELECT * FROM x
WHERE x.date in ([Param.1])
SELECT * FROM x
WHERE x.date in ([Param.1]) OR ([Param.2]) = 'X'

如果选中参数2(“X”),它将忽略第一个条件的结果,因为您正在使用OR子句。

简单,使用OR子句,如果选中alldates,它将返回所有日期的数据,如下所示:

SELECT * FROM x
WHERE x.date in ([Param.1])
SELECT * FROM x
WHERE x.date in ([Param.1]) OR ([Param.2]) = 'X'

如果选中参数2('X'),它将忽略第一个条件的结果,因为您正在使用OR子句。

。。。或者AllDates='X'
?您必须使用T-SQL(一种具有逻辑的存储过程,即,如果参数值为X,您可以执行一条语句,如果参数值为X,则可以执行另一条语句),请参见
。。。或者AllDates='X'
?必须使用T-SQL(一种具有逻辑的存储过程,即,如果参数值为X,则可以执行一条语句,如果参数值为X,则可以执行另一条语句),请参阅