次のようなクエリがあります。
SELECT *
FROM TableA a
LEFT JOIN TABLEB b
ON a.ColA = b.ColA
WHERE b.Col1 IS NULL
OR (b.Col1 = A AND b.Col2 = B AND b.Col3 BETWEEN @StartDate AND @EndDate)
TableA からすべての行が返されることを期待しているのに、クエリの日付部分が結果セットを台無しにして 3 行しか返さないため、奇妙な結果セットが得られます。これは、datetime フィルターを削除して他の 2 つのフィルターをそのままにしておくと、正しい結果が得られるためです。
これは「予期しない動作」のように思えますが、なぜこれが起こっているのかを論理的に説明することはできません。