일부 조인이 포함 된 쿼리가 있습니다. 조인 중 하나는 다른 값에 따라 달라집니다. WHERE 절에 SQL Server CASE WHEN
이
내 쿼리입니다 :SELECT *
FROM CLIIRE A
LEFT JOIN CLIIOR B ON A.PTA = B.PTA AND A.ORD = B.ORD AND A.ITE = B.ITE
LEFT JOIN CLIORD C ON C.PTA = B.PTA AND C.ORD = B.ORD
LEFT JOIN CLIPAC D ON C.OPA = D.ORI AND C.PAC = D.PAC
LEFT JOIN CLIREN E ON E.NRE = A.NRE AND D.INS = E.INS AND A.CPT = E.CPT
LEFT JOIN
(SELECT *
FROM CLINOM
WHERE CLA = (CASE WHEN B.PFA = '88882' THEN 'MD' ELSE 'BU' END)) AS N ON B.PFA = N.COD
LEFT JOIN
(SELECT *
FROM CLIMED WHERE PRE = '') AS M ON B.PFA = M.MED
LEFT JOIN CLIPRF P ON B.PRF = P.PRF
WHERE
(D.INS LIKE 'OM%' OR D.INS LIKE 'SOL%')
AND E.NFA IN ('5188')
AND A.CPT IN ('fi', 'pi')
ORDER BY
E.NFA
하지만 라인에서 오류가 발생 해요 :
LEFT JOIN (SELECT * FROM CLINOM WHERE CLA = (CASE WHEN B.PFA = '88882' THEN 'MD' ELSE 'BU' END)) AS N ON B.PFA=N.COD
는 SQL 서버처럼 보이는
나를 그렇게하도록 허용하지 않습니다 :다중 부품 식별자 "B.PFA"를 바인딩 할 수 없습니다.
B.PFA 컬럼이 존재합니다.
아무도 도와 줄 수 있습니까? 감사 !
LEFT JOIN을하면 문제가 있습니다. OUTER APPLY로 변경하면 B.PFA가 존재하는 한 B.PFA를 하위 쿼리에 보낼 수 있습니다. - B.PFA = N.COD가 들어가면 하위 쿼리 – Cato