2017-02-17 73 views
0

這是我收到的一個例子,但經過研究後,我仍然卡住了。他希望我返回電子郵件地址,如果沒有電子郵件返回電話號碼,如果沒有電話號碼返回單元格(全部一列)。我加入了我的桌子,但不知道我是否應該使用WHERE NOT EXISTSIF/ELSESQL返回電子郵件,如果沒有電子郵件返回電話號碼,如果沒有電話號碼返回單元格(所有一列)

SELECT * 
FROM entity e 
LEFT OUTER JOIN telephone t ON t.id_number = e.id_number 
LEFT OUTER JOIN email eml ON eml.id_number = e.id_number 
+2

您與左邊的連接處於正確的軌道上。這個問題的幸福功能是「合併」。 –

回答

-1

這將是答案:

SELECT Case When eml.emailaddress is not null then eml.emailaddress 
      When eml.emailaddress IS NULL 
      AND t.Phonenumber is NOT NULL THEN t.Phonenumber 
      Else t.cellNumber 
     End as ContactInfo 
    FROM entity e 
     LEFT OUTER JOIN telephone t ON t.id_number = e.id_number 
     LEFT OUTER JOIN email eml ON eml.id_number = e.id_number 
+0

如果我希望最後的else用於手機號碼而不是實體ID,該怎麼辦?我通過說t.telephone_type_code ='C'來區分手機......我如何用最後的其他實體ID替換它?道歉我對此很新穎! – JD23

+0

在第二種情況下不需要條件'eml.emailaddress IS NULL'。案例當操作員在第一個條件之後停止時,它的計算結果爲真。因此,如果它目前正在評估第二個,這意味着第一個是錯誤的,因此eml.emailaddress已經被證明是NULL。 – JeromeFr

+0

SELECT情況當eml.emailaddress不爲空則eml.emailaddress 當t.Phonenumber是NOT NULL THEN t.Phonenumber 當t.telephone_type_code = 'C' 然後ENTITY_ID 結束作爲的ContactInfo FROM實體Ë LEFT OUTER JOIN電話t ON t.id_number = e.id_number LEFT OUTER JOIN email eml ON eml.id_number = e.id_number –

0

你可以使用它返回第一個不爲空的結果COALESCE功能,不知道你是什麼意思返回小區的意思,但是我覺得你有這個想法

with xx as 
    (select '[email protected]' email, null telephone, null cell 
     from dual 
     union all 
     select null email, '123456' telephone, null cell 
     from dual 
     union all 
     select null email, null telephone, '5' cell 
     from dual) 
    select coalesce(email, telephone, cell) first_not_null from xx 
0

我最終得到它像這樣工作:

CASE WHEN TRIM(eml.email_address) IS NOT NULL THEN eml.email_address 

WHEN TRIM(t.telephone_number) IS NOT NULL THEN 'H: (' || t.area_code || ')'    || SUBSTR(t.telephone_number, 1, 3) || '-' || SUBSTR(t.telephone_number, 4, 4) 

WHEN TRIM(t2.telephone_number) IS NOT NULL THEN 'C: (' || t2.area_code || ')' || SUBSTR(t2.telephone_number, 1, 3) || '-' || SUBSTR(t2.telephone_number, 4, 4) 

ELSE 'No Email/Phone Found' 

END AS "EMAIL/PHONE" 
相關問題