2017-02-17 66 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" 
相关问题