Il y a un poids de niveau supérieur pour un envoi, mais dans la mesure où il y a plusieurs poids pour les unités de manutention. Si l'une de ces unités de manutention n'a aucune valeur, je veux que l'envoi ne s'affiche pas dans ma requête.
Voici ma requête - p> Ceci retourne 123 comme il y a est actuellement deux cases, une avec un poids manuel de 123 et un avec 0. p> Il ne doit pas ne pas renvoyer cet envoi comme l'un des poids manuels est égal à 0. P> P>
3 Réponses :
Si vous modifiez le Remarque Cela vous permet de supprimer l'expression code> code> car il ne renvoie que les envois pour lesquels tous les rejoindre code> sur un rejoindre code> et inclure h.manual_gross_weight <> '0' code> dans le / Code> condition, puis en comparant le nombre de lignes de envoi code> avec ceux de Handling_unit_shipment code> Vous pouvez voir quels envois n'avaient pas de poids nul (car les comptes seront les mêmes) : manual_gross_weight code> sont non nuls. . p> p>
Ce que je veux dire, c'est si l'un quelconque des poids bruts manuels est nul, donc dans ce cas, l'un d'entre eux n'est alors pas de rangée, car cet envoi n'est pas terminé, car certaines lignes n'ont pas les poids remplis. Est-ce que vous me dites. ?
@MFGN Cette requête fera cela. Si un envoi a des valeurs 0 ou NULL dans Handling_unit_shipment.Manual_unit_weight.weight code>, la joindre gauche code> retournera tous les valeurs code> null code> pour cette ligne. Ensuite, lorsque nous faisons le nombre code>, le nombre de s.shipment_id code> sera supérieur à celui de h.shismment_id code> (car cela avait un NULL code> valeur) et afin que l'envoi ne soit pas affiché.
@MFGN Je ne pense pas que votre édition est correcte. Aucune valeur ne passera un <> NULL code> test. Voir dbfiddle.uk/...
@MFGN mais si la valeur est null code>, il échouera sur le test <> 0 code>, juste en tant que 0 code> la valeur.
SELECT DISTINCT S.SHIPMENT_ID,
S.STATE,
S.CONTRACT,
SUM(H.MANUAL_GROSS_WEIGHT) MANUAL_GROSS_WEIGHT
FROM SHIPMENT S
JOIN HANDLING_UNIT_SHIPMENT H
ON H.SHIPMENT_ID = S.SHIPMENT_ID
AND H.MANUAL_GROSS_WEIGHT <> NULL
WHERE S.STATE = 'Preliminary'
AND S.CONTRACT = 'BVL10'
GROUP BY S.SHIPMENT_ID,
S.STATE,
S.CONTRACT
HAVING COUNT(S.SHIPMENT_ID) = COUNT(H.SHIPMENT_ID)
Je n'utiliserais pas si le poids pourrait être rejoindre code> pour cela. J'utiliserais simplement une clause code> code>. En supposant que les poids ne soient jamais négatifs: 0 code> et que vous avez des valeurs négatives, alors: p> HAVING COUNT(H.MANUAL_GROSS_WEIGHT) = COUNT(*)
Et si la valeur est assez souvent nulle? Dans ce cas si un poids est null, je ne veux pas que l'envoi affiche du tout. Il n'est jamais zéro, c'est nul ou a une valeur à chaque rangée et si une ligne est null, je veux que cela ne montre pas que l'envoi est essentiellement complète.
Vous pouvez ajouter et h.manual_gross_weight n'est pas null code> au où la clause CODE>. Cela fera filtrer les envois où toutes les valeurs sont null code>.
Ce n'est donc pas, alors s'il y a deux poids sous l'envoi. L'une est nulle et une valeur a une valeur alors je ne veux pas que l'envoi soit renvoyé, avec l'endroit où vous avez mentionné que l'envoi sera restitué avec juste le poids qui existe, ignorant le fait qu'il y a un poids nul ..
@mfgn. . . Y a-t-il une raison pour laquelle vous avez inaccepté cette réponse?
Données d'échantillonnage du fournisseur et votre sortie attendue dans le format de tableau
Utilisez la clause!
@jarlh pouvez-vous me montrer s'il vous plaît
Quelle saveur de SQL est-ce?
@Nick c'est oracle
Je suis surpris que cela ne se plaint pas d'utiliser
null code> dans l'expressionmanual_gross_weight code> car cela n'implique pas une fonction d'agrégat.