Temat: Join'owanie z warunkiem?

Witam wszystkich,
mam pytanie czy jest jakaś możliwość joinowania z wykorzystaniem warunków.

Coś na zasadzie:

select * from tablica1 aa join tabllica2 on aa.kolumna1=bb.kolumna1 AND
case
when aa.kolumna1=5 then aa.kolumna2=bb.kolumna_dla5
when aa.kolumna1=6 then aa.kolumna2=bb.kolumna_dla6

wiem, że 'gramatycznie' Oracle tego nie przyjmuje ale czy jest coś co poradzi sobie z taką logiką?

W PRZYKŁADZIE:

create table tablica1
( ID integer,
numer integer,
wartosc integer,
kod integer)

create table tablica2
( ID integer,
numer_dla5 integer,
numer_dla6 integer,
lokalizacja integer,
lokalizacja2 integer)

insert into tablica1 values(5,101,1000,1);
insert into tablica1 values(5,102,5000,2);
insert into tablica1 values(6,101,2000,3);
insert into tablica1 values(6,102,1000,4);


insert into tablica2 values(5,101,216,1,13);
insert into tablica2 values(5,102,217,1,14);
insert into tablica2 values(6,365,101,1,15);
insert into tablica2 values(6,155,102,1,16);

select * from tablica1;
/*************************
id numer wartosc kod
5 101 1000 1
5 102 5000 2
6 101 2000 3
6 102 1000 4
*************************/

select * from tablica2;
/*************************
id numer_dla5 numer_dla6 lokalizacja1 lokalizacja2
5 101 216 1 13
5 102 217 1 14
6 365 101 1 15
6 155 102 1 16
*************************/

select aa.*,bb.* from tablica1 aa join tablica2 bb on aa.id=bb.id;
--otrzymam duplikaty

select aa.*,bb.* from tablica1 aa join tablica2 bb on aa.id=bb.id and aa.numer=bb.numer_dla5;
--otrzymam dane tylko dla id=5

select aa.*,bb.* from tablica1 aa left join tablica2 bb on aa.id=bb.id and aa.numer=bb.numer_dla5;
--otrzymam dane tylko dla id=5 plus puste wiersze

select aa.*,bb.* from tablica1 aa join tablica2 bb on aa.id=bb.id and aa.numer=bb.numer_dla6;
--otrzymam dane tylko dla id=6

select aa.*,bb.* from tablica1 aa join tablica2 bb on aa.id=bb.id and aa.numer=bb.numer_dla6;
--otrzymam dane tylko dla id=6 plus puste wiersze

TUTAJ POJAWIA SIĘ MOJE PYTANIE CZY MOGĘ JAKOŚ ZROBIĆ JOINA KTÓRY SIĘ Z TYM UPORA???

COŚ NA WZÓR

select * from tablica1 aa join tabllica2 on aa.ID=bb.ID AND
case
when aa.ID=5 then aa.NUMER=bb.NUMER_DLA5
when aa.ID=6 then aa.NUMER=bb.NUMER_DLA6

Poradzilem sobie w inny sposób, dzięki któremu otrzymam wyniki jakie oczekuje. Zastanawia mnie jednak czy jest coś co pozwoli się z tym uporać trakcie jedngo join'a.

--mój sposób + wynik:
select aa.*,bb.* from tablica1 aa join tablica2 bb on aa.id=bb.id and aa.numer=bb.numer_dla5 where aa.id=5
union
select aa.*,bb.* from tablica1 aa join tablica2 bb on aa.id=bb.id and aa.numer=bb.numer_dla6 where aa.id=6;

/**************************************************************************************************
KOD NUMER wartosc id id_1 numer_dla5 numer_dla6 lok lok2
1 101 1000 5 5 101 216 1 13
2 102 5000 5 5 102 217 1 14
3 101 2000 6 6 365 101 1 15
4 102 1000 6 6 155 102 1 16
**************************************************************************************************/

Jeżeli nie da się tego zrobić, również proszę o odpowiedź. A może można to zrobić inaczej?
Pozdrawiam i z góry dziękuję za pomoc.

Łukasz