J'ai deux tables avec les données suivantes:
Table1 (Paletid, CasSupped, OrderId) CODE> P>
palletid | (caseshipped) | orderid
2002055 | 0.00 | 146
2002056 | 0.00 | 146
2002057 | 10.00 | 146
2002058 | 10.00 | 146 Value should not appear(orderid=142)
2002058 | 50.00 | 146
2002059 | 25.00 | 146
2002060 | 0.00 | 146
3 Réponses :
Vous n'avez pas répété le résultat dans votre résultat. Dans SQL, la clause distincte fonctionne pour chaque valeur d'une ligne non sur une seule valeur de colonne
Si vous ne voulez qu'un résultat pour chaque valeur d'une colonne que vous devez utiliser le groupe. par and agrégation fonction, par exemple min () ou max () p> regarder à votre dernier échantillon semble que vous recherchiez le groupe min () de Palleid de l'Union entre le 2 Tables P> selet palletid, min(caseshipped), orderid
from(
select palletid, caseshipped, orderid
from table1
union
select palletid, caseshipped, orderid
from table1
) t
where orderid = 145
group by palletid
Je suis désolé, je viens de corriger le résultat attendu. Le résultat répété est Paletid = 2002058
Sur la base de votre échantillon, ma réponse doit voir votre résultat attendu et pour Paletid = 2002058 devrait sélectionner la ligne avec 50,00
oui dans ce cas oui, mais si le montant du tableau1 était 8,00 par exemple, je suis quand j'ai utilisé votre code, j'ai eu une valeur de 10,00 dans Paletid = 2002058 alors quoi faire ici
Ensuite, votre question et votre échantillon ne sont pas clairs .. et votre dernier commentaire n'est pas cohérent avec votre question ..
J'ai corrigé l'échantillon de données et ajouté une autre colonne aux deux tables, s'il vous plaît laissez-moi savoir si maintenant il est clair
Répondez mis à jour .. avec une suggestion ..hope est ce que vous recherchez
merci, ce que je cherche exactement c'est tout le palettid, qui existent dans le tableau2, avec la cassevipped qui existe sur Table1 avec Table1.Palletid = Table2.Palletided et s'il n'existe pas dans le tableau1, utilisez la valeur de 0 = cassep à celles-ci Nombres,
Vous ne manquez pas simplement une condition dans votre sur la clause code> ..
SELECT DISTINCT table2.palletid,
COALESCE(table1.caseshipped,0) FROM table2
LEFT JOIN table1 ON table2.orderID = table1.orderID AND table2.palletid=table1.PalletID
WHERE table2.orderid = 146
Ajoutez simplement une condition de jointure sur orderid strong>. Votre jointure sur Paletid entraîne une jointure de plusieurs à plusieurs et c'est la raison pour laquelle vous voyez 2 rangées, ils sont en réalité 4 lignes (2 pour OrderID 146, 2 pour OrderID 142), mais depuis que vous avez filtrer sur commande 146, vous voyez seulement 2 rangées . Essayez ceci:
Quelles sont les valeurs d'entrée ..?
L'une de votre table (Table1 ou Table2) a 2 enregistrements pour Paletid = 2002058. Cela provoque plusieurs enregistrements dans votre résultat. S'il y a plusieurs enregistrements, alors que vous devez enregistrer dans votre résident?
Je ne vois pas une colonne appelée
table1.casecount code> dans votre définition de table.
@XEngineer Non, j'ai déjà vérifié cela et ce n'est pas le cas.
@ERIC Merci j'ai corrigé mon erreur.
Tableau1 a une valeur en double pour Paletid 2002058
Courez-les. Lequel renvoie deux résultats? L'un d'eux fait.
Sélectionnez Paletid, CasSupped à partir de TABLE1 Où PALETTID = 2002058 CODE> et
Sélectionnez Paletid, CasShipping à partir de TABLET2, où Paletid = 2002058 CODE>
Pour les échantillons de données que vous avez publiés votre requête ne produisent pas la valeur répétée. Donc, vous n'avez pas décrit le problème correctement.
@Ricbrandt C'est la première chose que j'ai vérifié et encore une fois aucune valeur en double, je ne poserai pas la question si elle était évidente.
Juang, alors il y a quelque chose d'autre en cours car, comme indiqué par @forpas, les échantillons de données fournis ne produisent pas les résultats rapportés lorsque la requête affichée est exécutée.
@Ricbrandt, j'ai laissé tomber les tables et les a recréé les deux, et la requête a fonctionné correctement, donc je souhaite à l'avance et a également ajouté une colonne de commande aux deux tables et ajouté la valeur palettide = 2002058 deux fois dans les deux tables, mais avec des ordres différents, mais avec des ordres différents, mais avec des ordres différents, mais avec des commandes différentes, mais avec des commandes différentes. Ensuite, j'ai essayé d'interroger cela par OrderId, mais je suis en double, des idées maintenant avec un exemple d'échantillon de données?