2014-04-30 2 views
0

나쁜 결정의 몇 년 동안 몇 데이터베이스에서 엉망을 청소하려고합니다. 아래 예제를 사용하면 'X'필드가 'Y'필드로 연결됩니다. 문제는 'X'가 레거시 시스템에 연결되어 두 시스템 중 하나의 레코드를 보유한다는 것입니다. 'Z'는 첫 번째 연결이 NULL 인 경우 사용할 대체 링크를 포함 할 수 있습니다 ... 임시 테이블에 두 개의 별도 쿼리를 실행하지 않고이 "효율적으로"만드는 방법을 잃었습니다. 감사.LEFT JOIN ISNULL

FROM dbo.x X 
LEFT JOIN (SELECT Y.id, Z.varnum 
     FROM dbo.y Y 
     LEFT JOIN dbo.Z 
     ON Y.id = Z.varnum) W 
ON X.id = ISNULL(W.id,W.varnum) 
+0

을 조인하고 일치하는 항목을 찾을 수없는 경우, Z에 X에 가입? –

답변

2

사용 병합 선택의 기능이 왼쪽, 먼저 Y로 X에 가입 할 명확히하기 위해

SELECT COALESCE(Y.ID, Z.VARNUM) FROM X 
LEFT JOIN Y on X.ID = Y.ID 
LEFT JOIN Z on X.ID = Z.VARNUM 
+0

Coalesce ... lol. 매력처럼 작동합니다! 고든, 고든. – MikeDes