Mam kwerendę Microsoft SQL Server 2008, która zwraca dane z trzech tabel przy użyciu lewego zewnętrznego sprzężenia. Wiele razy nie ma danych w drugiej i trzeciej tabeli, a więc otrzymuję wartość null, która moim zdaniem jest domyślna dla lewego sprzężenia zewnętrznego. Czy istnieje sposób na zastąpienie wartości domyślnych w instrukcji select? Mam obejście, które mogę wybrać w zmiennej tabeli, ale wydaje się trochę brudny.Zastąp domyślne wartości zerowe zwrócone z lewego zewnętrznego łączenia
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'
Chciałbym, aby ilość i cena standardowa były domyślnie zerowe, jeśli to możliwe.
Wiedziałem, że to musi być łatwe, ale z jakiegoś powodu zostałem zablokowany, jak to zrobić. Dzięki. –
Jeśli jest to MySQL, IsNull należy zastąpić przez "IFNULL". Dzięki. – Dhanushka
W PostgreSQL wygląda na ["COALESCE"] (http://www.postgresql.org/docs/9.3/static/functions-conditional.html). W przypadku MySQL strona podręcznika znajduje się tutaj: ["IFNULL"] (http://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html). Nie jestem pewien co do standardu. –