문제
데이터를 가져와야하는 메인 테이블이 있습니다. 필드가 시간의 40%와 일치하는 왼쪽 외부 조인이 있습니다. 그런 다음 테이블 A의 데이터와 일치 해야하는 다른 조인이 있습니다.
이것은 의사 코드의 SQL입니다. 이 쿼리는 작동하지 않습니다.
- 이것은 내가하고 싶은 부분이지만 작동하지 않습니다. 및 h.col3 = a.state ????
IBM DB2와 함께 일하고 있습니다.
SELECT DISTINCT
APP_NO as app_no,
A.STATE as state
...
... Fields
...
FROM
TABLE_A A
LEFT OUTER JOIN
TABLE_B HIST
ON
HIST.COL1 = A.COL1
, TABLE_C B
LEFT OUTER JOIN
TABLE_D H
ON
H.COL2 = B.COL2
-- This is the part I want to do but doesn't work.
AND
H.COL3 = A.STATE????
WHERE
A.BRANCH = 'Data'
해결책
나는 당신이 이것처럼 그것을 다시 쓸 수 있다고 생각합니다 (그러나 나는 당신의 진술을 잘못 읽을 수 있습니다)
FROM
TABLE_A A LEFT OUTER JOIN TABLE_B HIST ON
HIST.COL1 = A.COL1
LEFT OUTER JOIN TABLE_D H ON
H.COL3 = A.STATE
LEFT OUTER JOIN TABLE_C B ON H.COL2 = B.COL2
WHERE
A.BRANCH = 'Data'
또한이 오류에 대한 IBM DOCO는 다음과 같습니다.
가입 연산자 또는 병합 명령문과 관련된 ON 절은 유효하지 않습니다. 설명:
ON 절의 열 참조는 ON 절의 범위에있는 테이블의 열만 참조해야합니다.
그래서 나는 착각 할 수있다. "h.col3 = a.state"를 결합 할 때 표 A가 해당 범위에 있지 않기 때문에 On Clause의 범위를 벗어 났을 때 절의 잘못된 것처럼 보인다.
다른 팁
Where 조항에 "and h.col3 = a.state"를 넣으면 어떻게됩니까?
제휴하지 않습니다 StackOverflow