加入其中1值不必相同的表格

问题描述:

我需要在SQL Server 2014中加入下面两个表格,我使用了下面的代码,但是我的问题是Sales_org不匹配。如果它不匹配,它应该返回一个基于Material而不是Sales Organization的值。 它是0的原因是两个国家都是一样的。加入其中1值不必相同的表格

Left Join 
[Z_PACKING] on [CTE_OPMAO2].[Material] = [Z_PACKING].[Material number] 
AND 
[CTE_OPMAO2].[Sales_org] = [Z_PACKING].[Sales Organization] 

我试过使用“或”但卡住了。

[CTE_OPMAO2]
==============

Sales_org | Material       

2110  | 005013K     
2190  | 036060J     
2190  | 036280J     
2190  | 036353J 
2110  | 037380K 
2110  | 037740K 

[Z_Packing]
=========== ===

Sales_org | Material number | Packaging      

2110  | 005013K   |  PC  
2190  | 036060J   |  PAC  
2190  | 036280J   |  CAR 
0   | 036353J   |  PC 
0   | 037380K   |  PC 
0   | 037740K   |  PC 
+1

请提供全选择查询 –

+0

SELECT * FROM CTE_OPMAO2左加入[Z_PACKING]对[CTE_OPMAO2]。[材料] = [Z_PACKING]。[物料编号]和[CTE_OPMAO2]。[Sales_org] = [Z_PACKING ] [销售组织] –

我不知道你为什么拿到股票,忘了()?

select * 
from CTE_OPMAO2 
Left Join [Z_PACKING] on [CTE_OPMAO2].[Material] = [Z_PACKING].[Material number] 
AND ([CTE_OPMAO2].[Sales_org] = [Z_PACKING].[Sales Organization] 
    or [Z_PACKING].[Sales Organization] = 0) 
+0

嗨感谢您的信息,我试过了,它工作,但我从72154记录到72305,这对我来说没有任何意义,考虑到左连接应保持原始行完好无损。 –

+0

左连接的记录数不会比左表的少,但可以有更多。在Zpacking中,您可能有重复的材料。你可以在你的表上添加一个约束来防止这种情况的发生。 – Peter

+0

谢谢,显然有重复,不应该在那里,问题解决! –