两张表连接,多连接条件,如何连接。

H表:X字段为空,或者X字段不为空,有一个或者多个记录

AFC表:连接H表,即AFC.AUFPL = H.AUFPL,若H表X字段为空,连接方式为以下处理;若H表X字段不为空,取APLZL即可,不用取最大值,连接条件变为AFC.AUFPL = H.AUFPL  AND  AFC.APLZL = H.APLZL.

以下是个人写的H表字段为空的情况,请纠正:

LEFT JOIN (SELECT AUFPL,MAX(APLZL),MAX(LTXA1),MAX(ARBID) FROM ERP.AFVC  

GROUP BY AUFPL ) AFC ON AFC.AUFPL = H.AUFPL

目前问题点:对于H表X字段不为空时,不清楚怎么处理

Basis 发布于 2021-3-30 15:31 (编辑于 2021-3-30 15:51)
1min目标场景问卷 立即参与
回答问题
悬赏:6 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
Z4u3z1Lv6专家互助
发布于2021-3-30 15:41

用下边的SQL中用的字段重新组织一下上面的说明。看得有点头晕

  • Basis Basis(提问者) 已经更改了,请帮忙看下。
    2021-03-30 15:50 
  • Z4u3z1 Z4u3z1 回复 Basis(提问者) 分两条SQL分别查出H.X为空和H.X不为空,再用UNION ALL并集处理
    2021-03-30 15:59 
  • Basis Basis(提问者) 回复 Z4u3z1 可以细说一下吗,没遇到过这种处理。
    2021-03-30 16:04 
  • Z4u3z1 Z4u3z1 回复 Basis(提问者) SELECT XXX,XXXX,XXXXX FROM AFC LEFT JOIN (SELECT AUFPL,MAX(APLZL),MAX(LTXA1),MAX(ARBID) FROM ERP.AFVC GROUP BY AUFPL ) AFC ON AFC.AUFPL = H.AUFPL WHERE ISNULL(AFC .X,\'\')=\'\' UNION ALL SELECT XXX,XXXX,XXXXX FROM AFC LEFT JOIN ERP.AFVC AFC.AUFPL = H.AUFPL AND AFC.APLZL = H.APLZL WHERE ISNULL(AFC .X,\'\')<>\'\'
    2021-03-30 16:07 
  • Basis Basis(提问者) 回复 Z4u3z1 SELECT XXX,XXXX,XXXXX FROM AFC 你这个是把所有连接表运行两次吗?
    2021-03-30 16:20 
  • 1关注人数
  • 474浏览人数
  • 最后回答于:2021-3-30 15:56
    请选择关闭问题的原因
    确定 取消
    返回顶部