あなたの説明はあなたの質問と相関していません。
をメンションしました"ただし、WHERE 句も含める必要がありますが....WHERE 句の条件が異なる場合でも、左側のテーブルの各レコードに対して左側のテーブルの行が返されるようにしたいです。会っていません。 "
したがって、クエリは次のようになると思います
SELECT a.*, b.* FROM a LEFT OUTER JOIN b ON a.vin =b.vin WHERE Trunc(a.rep_open_date) BETWEEN Trunc(b.check_in_date) + 1 AND Trunc(b.check_in_date ) - 1 コード> プレ>
上記の LEFT OUTER JOIN INNER JOIN に変換されます Where の右側のテーブルのフィルタリングによる 節
したがって、最初のクエリで使用したように、正しいテーブル フィルターは JOIN の一部である必要があります。 右側のテーブルに一致するレコードがない場合でも、左側のテーブルから行を返します。
SELECT a.*, b.* FROM a left outer join b ON a.vin =b.vin AND Trunc(a.rep_open_date) BETWEEN Trunc(b.check_in_date) + 1 AND Trunc(b.check_in_date ) - 1 コード> プレ>
更新:
10 between 11 and 9 のような between 演算子を使用しました ただし、9 ~ 11 の間の 10 にする必要があります
SELECT a.*, b.* FROM a left outer join b ON a.vin =b.vin AND CAST(a.rep_open_date as date) BETWEEN CAST(b.check_in_date as date) - 1 AND CAST (b.check_in_date as date) + 1 プレ>