あなたの説明はあなたの質問と相関していません。
をメンションしました"ただし、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
プレ>