문제

데이터를 가져와야하는 메인 테이블이 있습니다. 필드가 시간의 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"를 넣으면 어떻게됩니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top