@RBarryYoung の回答に追加するには、条件を括弧で囲むこともお勧めします。これにより、意図する結果/条件の適用方法が明確になります。
すなわち
WHERE (oppt.Location='O/S'
OR oppt.Location='Overseas')
AND oppt.OPEN_DATE BETWEEN '2014-01-01 00:00:00.000'
AND '2010-01-01 00:00:00.000'
は次のものとは異なります。
WHERE oppt.Location='O/S'
OR (oppt.Location='Overseas'
AND oppt.OPEN_DATE BETWEEN '2014-01-01 00:00:00.000'
AND '2010-01-01 00:00:00.000')
あなたが現在持っているのは上記の2番目ですが、おそらく最初のものを意味しています。
Operator Precedenceを読んでください- これは、さまざまな演算子がどの順序で実行されるかを示します。この場合AND
、 は前に適用されOR
ます。ただし、ブラケットを適切に使用して条件をグループ化すると、意図しない結果をもたらすリスク演算子の優先順位を取り除くのに役立ちます。
あなたの場合、上記の例の最初のものを望んでいると思いますが、実際には次のように合理化できます。
WHERE oppt.Location IN ('O/S', 'Overseas')
AND oppt.OPEN_DATE BETWEEN '2010-01-01 00:00:00.000'
AND '2014-01-01 00:00:00.000')