Oracle proprietäre tritt - Beitritt auf mehrere Bedingungen

Habe ich in den folgenden 2 Versionen von ANSI-konforme SQL(Spalte/Tabelle Namen geändert zum Schutz von vertraulichen Daten), von denen einer von Ihnen erfüllt meine Anforderung nach der richtigen Logik, während der andere nicht.

1)ANSI-Join 1-Funktioniert

SELECT b.COLUMN_A,
  COUNT(a.COLUMN_A)
FROM TABLE1 a
RIGHT OUTER JOIN
  (SELECT COLUMN_A FROM TABLE2 WHERE COLUMN_X='TEST') b
ON  a.COLUMN_A = b.COLUMN_A
AND a.COLUMN_B in (SELECT FROM TABLE3 WHERE COLUMN_Y=5)  --WORKS
GROUP BY b.COLUMN_A

1) gibt eine Ausgabe wie diese:

COLUMN_A  COUNT(COLUMN_A)
--------------------------
A       0
B       0
C       1
D       1
E       0

2)ANSI-Join 2-funktioniert nicht

SELECT b.COLUMN_A,
  COUNT(a.COLUMN_A)
FROM TABLE1 a
RIGHT OUTER JOIN
  (SELECT COLUMN_A FROM TABLE2 WHERE COLUMN_X='TEST') b
ON  a.COLUMN_A = b.COLUMN_A
WHERE
a.COLUMN_B in (SELECT FROM TABLE3 WHERE COLUMN_Y=5)      --DOESN'T WORK
GROUP BY b.COLUMN_A

3)Oracle, proprietäre anzuschließen-funktioniert nicht

SELECT b.COLUMN_A,
  COUNT(a.COLUMN_A)
FROM TABLE1 a,(SELECT COLUMN_A FROM TABLE2 WHERE COLUMN_X='TEST') b
WHERE
a.COLUMN_A(+) = b.COLUMN_A
AND a.COLUMN_B in (SELECT FROM TABLE3 WHERE COLUMN_Y=5) --DOESN'T WORK
GROUP BY b.COLUMN_A

2) & 3) liefert eine Ausgabe wie diese:

COLUMN_A  COUNT(COLUMN_A)
--------------------------
C       1
D       1

Ich verstehen, (2,ANSI) & (3,PROPRIETÄRE) sind äquivalent. Aber es Ist eine gleichwertige proprietäre SQL für (1,ANSI)?.
Jede Hilfe wäre sehr willkommen.
Danke.
Edit: ich habe aktualisiert die Frage mit den sample-Ausgang.

Sie sollten erwägen, hinzufügen von Informationen deutlich zu machen, was die gewünschte Ausgabe aussieht, und was Sie bekommen sind in der schlechten Situation.

InformationsquelleAutor komedit1 | 2011-04-29

Schreibe einen Kommentar