2017-08-14 47 views
0

我有兩個表看起來像這樣:SQL - 加入默認,如果它不能夠匹配

表1:

+---------+---------+-------------+ 
| Activity| Area | Responsible | 
+---------+---------+-------------+ 
| Cooking | Meat | Peter  | 
| Cooking | Vegan | Sia  | 
| Cleaning| Kitchen | Paul  | 
| Cleaning| Toilets | Selina | 
+---------+---------+-------------+ 

表2:

+---------+---------+-------------+ 
| Activity| Area | Day   | 
+---------+---------+-------------+ 
| Cooking | Meat | Monday | 
| Cooking | Vegan | Monday | 
| Cleaning| Garden | Friday | 
| Cleaning| Toilets | Friday | 
+---------+---------+-------------+ 

現在我想一個SQL加入他們,這樣我就可以看到每一天的負責人。

我認爲標準的SQL會是這個樣子:

SELECT DAY, ACTIVITY, RESPONSIBLE 
FROM TABLE_2 2 
LEFT JOIN TABLE_1 1 
ON 1.ACTIVITY = 2.ACTIVITY AND 1.AREA = 2.AREA 

但現在也有一些行不能爲合資(例如清潔花園)。 在這種情況下(如果無法加入)我總是希望彼得對此負責。

我可以在一個連接中做到這一點嗎(也許有CASE語句?)或者你會怎麼做?

回答

2

即使DB2允許,也不要爲表名使用數字。數字應該是數字。

您正在尋找COALESCE()

SELECT t2.DAY, t2.ACTIVITY, COALESCE(t1.RESPONSIBLE, 'Peter') as Responsible 
FROM TABLE_2 t2 LEFT JOIN 
    TABLE_1 t1 
    ON t1.ACTIVITY = t2.ACTIVITY AND t1.AREA = t2.AREA; 
相關問題