带条件sql的左外连接
Posted
技术标签:
【中文标题】带条件sql的左外连接【英文标题】:Left outer join with condition sql 【发布时间】:2021-08-26 16:21:17 【问题描述】:有人知道是否有办法进行有条件的左外连接吗?我有带有实际值的分类帐表和要从中分配 BMDIV 的参考部门表。 但部门参考表包含 LC 编号或 = 'xx' 我想要做的是将分类帐表与 LCTRYNUM、LC 和 DEPTNUM 上的部门表连接,但在 LC = '**' 的情况下,连接将只有 LCTRYNUM 和 DEPTNUM。
总账明细表
LCTRYNUM | LC | DEPTNUM | Amount |
---|---|---|---|
618 | 40 | 30813 | 100 |
618 | 50 | 30813 | 200 |
618 | 60 | 30813 | 300 |
618 | 10 | 30813 | 100 |
事业部参考表
LCTRYNUM | LC | DEPTNUM | BMDIV |
---|---|---|---|
618 | ** | 30813 | 30 |
618 | 10 | 30813 | 2P |
预期的结果是这样的
LCTRYNUM | LC | DEPTNUM | Amount | BMDIV |
---|---|---|---|---|
618 | 40 | 30813 | 100 | 30 |
618 | 50 | 30813 | 200 | 30 |
618 | 60 | 30813 | 300 | 30 |
618 | 10 | 30813 | 100 | 2P |
【问题讨论】:
【参考方案1】:您可以使用两个left join
s,第一个用于引入直接匹配,第二个用于默认匹配:
select a.*, coalesce(d.bmdiv, d_default.bmdiv) as bmdiv
from actual a left join
divisions d
on a.lc = d.lc left join
divisions d_default
on d_default.lc = '**'
【讨论】:
谢谢戈登。这个解决方案正是我想要的。以上是关于带条件sql的左外连接的主要内容,如果未能解决你的问题,请参考以下文章