0

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

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

我有 2 个参数。-SelectedDates(例如'2012-11-15','2012-11-15') -AllDates ('X' or '')

通常查询应该是这样的:

SELECT * FROM x
WHERE x.date in ([Param.1])

所以我的问题是:如果不需要 WHERE 子句,我该如何调整查询。

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

4

3 回答 3

2

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

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

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

于 2012-11-15T08:04:24.010 回答
1

如果您的所有日期都存在于控件中,则检查全部还可以生成日期,因此您仍然可以使用 WHERE IN ('date1',....'dateN')

你也有这个选择

WHERE x.Date IN (.....) OR AllDates = 'X'
于 2012-11-15T08:02:24.963 回答
0

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

IF(AllDates is not null)
SELECT * FROM x
ELSE
SELECT * FROM x
WHERE x.date in ([Param.1])
于 2012-11-15T07:57:51.753 回答