使用"或"运算符进行T-SQL左连接

Mic*_*el 2 t-sql sql-server left-join

我有以下查询,我想在匹配中拉入其中一个或两个.成员可以有多个ID或HIC.因此,如果member ID = member ID然后拉出max(loaddate)为最新的HIC同样如果HIC = HIC使用max(loaddate)拉入成员ID.我希望包含左连接,以防在任何一个场景中找不到匹配项.

码:

 SELECT 
    CH1.*
    ,AVM.MBR_ID
    ,AVM.HIC
    ,AVM.MBR_LST_NM
    ,AVM.MBR_FST_NM
    ,CAST(AVM.MBR_BIRTH_DT AS DATE) AS 'MBR_BIRTH_DT'
    ,AVM.LOADDATE
FROM 
    #CHECK1 CH1
LEFT JOIN 
    AVRIL.DBO.VW_MBR AVM ON (CH1.HICN = AVM.HIC OR CH1.MEMBER_ID = AVM.MBR_ID)
WHERE 
    CH1.HEALTH_PLAN = 'AVRIL' 
    AND AVM.LOADDATE=(SELECT MAX(LOADDATE) FROM AVRIL.DBO.VW_MBR) 
Run Code Online (Sandbox Code Playgroud)

谢谢,迈克尔

Guf*_*ffa 5

当您使用子句中的VW_MBR表中的字段时where,它会有效地left join转换为inner join.将条件放在连接中:

...
FROM #CHECK1 CH1
    LEFT JOIN AVRIL.DBO.VW_MBR AVM ON (CH1.HICN = AVM.HIC OR CH1.MEMBER_ID = AVM.MBR_ID)
      AND AVM.LOADDATE=(SELECT MAX(LOADDATE) FROM AVRIL.DBO.VW_MBR)
WHERE CH1.HEALTH_PLAN = 'AVRIL' 
Run Code Online (Sandbox Code Playgroud)