[英]What join columns should I take for ACDOCA and JVSO1 SAP tables?
我已将两个 SAP ERP 表提取到 Azure Synapse 中: ACDOCA
和JVSO1
。
现在我需要加入这两个表。 并且列EBELN
需要处于连接状态,而且两个表都有大约 40% 的EBELN
空的。 由于这些空值,这两个表会产生大量数据(单位:十亿)。
我尝试了什么:我又选择了一列EBELP
并根据这两列加入了两个表:
WHERE ACDOCA.EBELN = JVSO1.EBELN AND ACDOCA.EBELP = JVSO1.EBELP
但即使在这种情况下,我也会得到很多数据。
我想要的是:
我想加入这两个表并拥有更少的数据量(不是十亿)。 您能否建议我在两个表中添加更多列,以便我可以使用较少的数据正确连接两个表。
谢谢
on acdoca.ebeln=JVSO1.ebeln and acdoca.ebelp=JVSO1.ebelp
on acdoca.ebeln=JVSO1.ebeln
连接条件将为具有 null 值的行提供相同的结果。 我用示例数据重现了这一点。
具有 null 个值的输入数据:
埃伯恩 | EBELP |
---|---|
null | A |
AA | AA |
null | 乙 |
基于 ebeln 字段连接表:
select * from acdoca full outer join JVSO1 on
acdoca.ebeln=JVSO1.ebeln
基于 ebeln 和 ebelp 字段连接表:
select * from acdoca full outer join JVSO1 on
acdoca.ebeln=JVSO1.ebeln and acdoca.ebelp=JVSO1.ebelp
ebeln
字段为 null,就应该以这种方式编写查询,条件应该是匹配的ebelp
字段JOIN 表应该发生。select * from acdoca full outer join JVSO1
on
(acdoca.ebeln is not null and acdoca.ebeln=JVSO1.ebeln)
or
(acdoca.ebeln is null and acdoca.ebelp=JVSO1.ebelp)
或者
select * from acdoca full outer join JVSO1 on
(isnull(acdoca.ebeln,acdoca.ebelp) =
isnull(JVSO1.ebeln,JVSO1.ebelp))
即使您添加其他匹配列,加入条件也应该像上面的查询一样。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.