繁体   English   中英

我应该为 ACDOCA 和 JVSO1 SAP 表采用哪些连接列?

[英]What join columns should I take for ACDOCA and JVSO1 SAP tables?

我已将两个 SAP ERP 表提取到 Azure Synapse 中: ACDOCAJVSO1

现在我需要加入这两个表。 并且列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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM