0
votes

Comment ne pas retourner résultat si une valeur est null?

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 - xxx

Ceci retourne 123 comme il y a est actuellement deux cases, une avec un poids manuel de 123 et un avec 0.

Il ne doit pas ne pas renvoyer cet envoi comme l'un des poids manuels est égal à 0.


6 commentaires

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 dans l'expression manual_gross_weight car cela n'implique pas une fonction d'agrégat.


3 Réponses :


1
votes

Si vous modifiez le rejoindre sur un rejoindre et inclure h.manual_gross_weight <> '0' dans le / Code> condition, puis en comparant le nombre de lignes de envoi avec ceux de Handling_unit_shipment Vous pouvez voir quels envois n'avaient pas de poids nul (car les comptes seront les mêmes) : xxx

Remarque Cela vous permet de supprimer l'expression car il ne renvoie que les envois pour lesquels tous les manual_gross_weight sont non nuls. .


4 commentaires

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 , la joindre gauche retournera tous les valeurs null pour cette ligne. Ensuite, lorsque nous faisons le nombre , le nombre de s.shipment_id sera supérieur à celui de h.shismment_id (car cela avait un NULL 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 test. Voir dbfiddle.uk/...


@MFGN mais si la valeur est null , il échouera sur le test <> 0 , juste en tant que 0 la valeur.



0
votes
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)

0 commentaires

0
votes

Je n'utiliserais pas rejoindre code> pour cela. J'utiliserais simplement une clause code> code>. En supposant que les poids ne soient jamais négatifs: xxx pré>

si le poids pourrait être 0 code> et que vous avez des valeurs négatives, alors: p>

HAVING COUNT(H.MANUAL_GROSS_WEIGHT) = COUNT(*)


4 commentaires

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 au où la clause . Cela fera filtrer les envois où toutes les valeurs sont null .


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?