0

SQLServer 2008を使用していますが、この問題が発生しました。ユーザーがメニューから複数の日付を選択できる機能があります。また、チェックボックスをオンにするオプションもあります'すべての日付を選択してください'。

チェックボックスを選択した場合、クエリは指定された日付の結果のみを返す必要があります。したがって、WHERE句を実行します。チェックボックスを選択せず​​に1つ以上の日付を選択した場合。クエリはwhere句を使用して実行する必要があります。

これには2つのパラメーターがあります。-SelectedDates(例: '2012-11-15'、 '2012-11-15')-AllDates('X'または'')

通常、クエリは次のようになります。

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ユーザーがすべての日付のチェックボックスをオンにすると、2番目のパラメーターがここにあります

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