118 votes

Remplacer les valeurs nulles par défaut renvoyées par la jointure externe gauche

J'ai un Serveur Microsoft SQL server 2008 requête qui renvoie des données à partir de trois tables à l'aide d'une jointure externe gauche. De nombreuses fois, il n'y a pas de données dans la deuxième et troisième tableaux et si je reçois une valeur null, ce qui je pense est la valeur par défaut pour une jointure externe gauche. Est-il un moyen de remplacer les valeurs par défaut dans l'instruction select? J'ai une solution de contournement à ce que je peux sélectionner dans une variable de table, mais il se sent un peu sale.

SELECT iar.Description, iai.Quantity, iai.Quantity * rpl.RegularPrice as 'Retail', 
iar.Compliance FROM InventoryAdjustmentReason iar
LEFT OUTER JOIN InventoryAdjustmentItem iai  on (iar.Id = iai.InventoryAdjustmentReasonId)
LEFT OUTER JOIN Item i on (i.Id = iai.ItemId)
LEFT OUTER JOIN ReportPriceLookup rpl on (rpl.SkuNumber = i.SkuNo)
WHERE iar.StoreUse = 'yes'

Je voudrais la Quantité et de la RegularPrice par défaut à zéro si possible.

164voto

Michael Haren Points 42641

C'est aussi simple que

 IsNull(FieldName, 0)
 

Ou plus complètement:

 SELECT iar.Description, 
  ISNULL(iai.Quantity,0) as Quantity, 
  ISNULL(iai.Quantity * rpl.RegularPrice,0) as 'Retail', 
  iar.Compliance 
FROM InventoryAdjustmentReason iar
LEFT OUTER JOIN InventoryAdjustmentItem iai  on (iar.Id = iai.InventoryAdjustmentReasonId)
LEFT OUTER JOIN Item i on (i.Id = iai.ItemId)
LEFT OUTER JOIN ReportPriceLookup rpl on (rpl.SkuNumber = i.SkuNo)
WHERE iar.StoreUse = 'yes'
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X