Vannak esetek amikor valódi problémát jelent az, hogy az IN operandus, illetve az OR kapcsolat a feltételek között nem használható outer join esetén. Pélául az alábbi feltétel:
t1.month(+) IN (200808, 200809)
az alábbi hibaüzenetet dobja:
ORA-01719: outer join operator (+) not allowed in operand of OR or IN
Erre a legtermészetesebb elkerülő lehetőség, ha az IN-es vagy OR-os szűrő feltételt egy inline view-ban alkalmazzuk
(SELECT * FROM table WHERE month in (200808, 200809)) t1
Amennyiben ez nem lehetséges, akkor is vannak további kerülőutak. Ha például a IN halmaz egy zárt dátum vagy számhalmaz, akkor használhatunk betweent:
t1.month(+) BETWEEN 200808 AND 200809
Ha belegondolunk ez nem csoda, hiszen ez egy AND-es feltétellel egyenértékű.
A legnagyobb trükk viszont szerintem a DECODE használata:
DECODE(t1.month(+),200808,1,200809,1,0) = 1
Ez ugyanis előbb dekódol, aztán nézi meg, hogy kell-e outer sort igénybe venni, így az IN funkcionalitást tökételesen megvalósítja.