다음 두 가지 버전의 ANSI 호환 SQL (기밀 데이터를 보호하기 위해 변경된 열/테이블 이름) 중 하나가 올바른 논리를 따르고 내 요구 사항을 충족하며 다른 하나는 하지 않습니다.오라클 독점 조인 - 여러 조건에 합류
는1) ANSI 1 서지
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)과 같은 출력을 제공 가입 :
COLUMN_A COUNT(COLUMN_A)
--------------------------
A 0
B 0
C 1
D 1
E 0
2) ANSI -2- 나던 작동 가입을
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) 오라클의 독점적 인 가입 - 작동하지 않음
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)과 같은 출력을 제공한다 :
COLUMN_A COUNT(COLUMN_A)
--------------------------
C 1
D 1
I 독점 (2, ANSI) & (3) 동일 이해한다. 그러나 (1, ANSI)에 대해 독점적 인 SQL이 있습니까? 도움이 될 것입니다. 감사합니다. . 편집 : 샘플 출력으로 질문을 업데이트했습니다.
정보를 추가하여 원하는 내용을 출력하고 잘못된 결과를 얻는 방법을 생각해보십시오. – EvilTeach