Ich habe eine Abfrage mit einigen Joins. Einer der Joins hängt von einem anderen Wert ab.SQL Server CASE WHEN in WHERE-Klausel
Dies ist meine Frage:
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
Aber ich bin immer Fehler in der Zeile:
LEFT JOIN (SELECT * FROM CLINOM WHERE CLA = (CASE WHEN B.PFA = '88882' THEN 'MD' ELSE 'BU' END)) AS N ON B.PFA=N.COD
wie SQL Server Sieht mir nicht zulassen, dass tun:
Die mehrteilige Kennung "B.PFA" konnte nicht gebunden werden
Die Spalte B.PFA existiert.
Kann mir jemand helfen? Vielen Dank !
der LINKE JOIN, mit dem Sie Probleme haben, ändern Sie es in OUTER APPLY, dann kann es B.PFA in die Unterabfrage senden, solange B.PFA existiert - ON B.PFA = N.COD würde gehen die WHERE in der Unterabfrage – Cato