首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用“或”运算符的T-SQL左联接

使用“或”运算符的T-SQL左联接
EN

Stack Overflow用户
提问于 2015-04-23 20:06:29
回答 2查看 102关注 0票数 2

我有下面的查询,我想在一个匹配中输入其中一个或两者。一个成员可以有多个ID或HIC。因此,如果member ID = member ID然后为当前的HIC拉出最大值(loaddate),同样地,如果HIC = HIC使用最大值(loaddate)拉入成员ID。我希望包括左联接,以防在这两种情况下都找不到匹配。

代码:

代码语言:javascript
复制
 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) 

谢谢你,迈克尔

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-23 20:09:08

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

代码语言:javascript
复制
...
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' 
票数 5
EN

Stack Overflow用户

发布于 2015-04-23 20:45:16

这里可能是第一个建议的答案的替代方案,我使用自定义查询作为连接来优化它(我只使用最大加载日期,而不是在表的每一行上尝试连接)。

代码语言:javascript
复制
SELECT CH1.*
    ,MAVM.MBR_ID
    ,MAVM.HIC
    ,MAVM.MAX_LOADDATE
FROM #CHECK1 CH1
LEFT JOIN (SELECT AVM.HIC
               ,AVM.MBR_ID
               MAX(AVM.LOADDATE) AS [MAX_LOADDATE]
           FROM AVRIL.DBO.VW_MBR AVM
           GROUP BY AVM.HIC, AVM.MBR_ID) MAVM (MAVM.HIC = CH1.HICN
                                                  OR MAVM.MBR_ID = CH1.MEMBER_ID)
WHERE CH1.HEALTH_PLAN = 'AVRIL' 

与其他建议的查询相比,我简化了查询,将重点放在更改上。您仍然可以向INNER JOIN添加一个AVRIL.DBO.VM_MBR子句,以便获得其他列:

代码语言:javascript
复制
...
LEFT JOIN (...) MAVM ...
INNER JOIN AVRIL.DBO.VW_MBR AVM2 ON AVM2.HIC = MAVM.HIC
                                   AND AVM2.MBR_ID = MAVM.MBR_ID
                                   AND AVM2.LOADDATE = MAVM.MAX_LOADDATE
...

因此,您可以对要使用的列使用AVM2.xxx

希望这能帮上忙

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29833294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档