我有以下查询,我想在比赛中选择其中一项或两项。一个成员可以有多个ID或HIC。因此,如果member ID = member ID然后为最新的HIC拉取max(loaddate),则同样地如果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)


谢谢,
麦可

最佳答案

当您使用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'

关于sql-server - 使用“或”运算符的T-SQL左联接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29833294/

10-13 02:08