Ich habe eine Microsoft SQL Server 2008-Abfrage, die Daten aus drei Tabellen mithilfe eines linken äußeren Joins zurückgibt. Oft sind in der zweiten und dritten Tabelle keine Daten enthalten, und daher erhalte ich eine Null, die meiner Meinung nach die Standardeinstellung für den linken äußeren Join ist. Gibt es eine Möglichkeit, die Standardwerte in der select-Anweisung zu ersetzen? Ich habe eine Problemumgehung, bei der ich eine Tabellenvariable auswählen kann, die sich jedoch etwas schmutzig anfühlt.
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'
Ich möchte, dass Quantity und RegularPrice nach Möglichkeit standardmäßig auf Null gesetzt werden.
mysql
sql
sql-server
tsql
sql-server-2008
Brett Bim
quelle
quelle
Antworten:
Das ist so einfach wie
Oder vollständiger:
quelle
IFNULL
.Im Falle von
MySQL
oder istSQLite
das richtige SchlüsselwortIFNULL
(nichtISNULL
).quelle
MySQL
Beispielsweise:
Sie können auch mehrere Spalten verwenden, um deren Funktion
NULL
nach COALESCE zu überprüfen . Beispielsweise:quelle