2017-07-14 1 views
0

Je dois joindre les deux tables ci-dessous dans SQL Server 2014, j'ai utilisé le code suivant mais mon problème est que Sales_org ne correspond pas. S'il ne correspond pas, il doit renvoyer une valeur basée uniquement sur le matériel et non sur l'organisation des ventes. La raison pour laquelle c'est 0 est que c'est la même chose pour les deux pays.Joindre des tables où 1 valeur ne doit pas nécessairement être la même

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

J'ai essayé avec "OR", mais est resté coincé.

[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

s'il vous plaît fournir toute requête de sélection –

+0

Select * from CTE_OPMAO2 gauche Joignez-vous à [Z_PACKING] sur [CTE_OPMAO2]. [Matériel] = [Z_PACKING]. [Numéro d'article] ET [CTE_OPMAO2]. [Sales_org] = [Z_PACKING ] [Organisation des ventes] –

Répondre

0

Je ne sais pas pourquoi vous avez le stock, a oublié le()?

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

Salut Merci pour l'info, j'ai essayé cela et cela a fonctionné, mais je suis passé de 72154 dossiers à 72305 ce qui n'a pas de sens pour moi étant donné qu'une jointure gauche devrait garder les lignes intactes. –

+0

La jointure gauche n'aura pas moins d'enregistrements que dans la table de gauche, mais peut en avoir plus. Dans Zpacking, vous pouvez avoir des doublons. Vous pouvez ajouter une contrainte sur votre table pour empêcher cela. – Peter

+0

Merci, apparemment il y avait des doublons qui n'auraient pas dû être là, problème résolu! –