'How to default column to default value / value of another column if no matching row in SQL Left Join
I have a table Table_A with a name and a field named type_and_cargo. The following Postgresql query uses a left join to get the separate "type" and "cargo" values from Table_B
SELECT
a.type_and_cargo,
a.name
b.type_and_cargo,
b.type,
b.cargo FROM table_A a
LEFT JOIN table_B b USING (type_and_cargo)
But some rows in Table_A have a type_and_cargo which does not have a corresponding value in Table_B. Right now, the "type" and "cargo" columns become Null. How can I assign the a.type_and_cargo to "type" and Unknown to "cargo" if not match exists?
Solution 1:[1]
Would this do it?
SELECT
a.type_and_cargo,
a.name
b.type_and_cargo,
CASE
WHEN b.type_and_cargo IS NULL THEN a.type_and_cargo
ELSE b.type
END as type,
CASE
WHEN b.type_and_cargo IS NULL THEN 'Unknown'
ELSE b.cargo
END as cargo
FROM table_A a
LEFT JOIN table_B b USING (type_and_cargo)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
