这是我收到的一个例子,但经过研究后,我仍然被卡住了。他要我回传邮箱地址,如果没有邮件回传电话号码,如果没有电话号码回传手机(一栏全部)。我已经连接了我的表,但是不确定我应该使用WHERE NOT EXISTS
还是IF
/ELSE
。
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
发布于 2017-02-20 15:47:24
您可以使用将返回第一个非空值的COALESCE function。
发布于 2017-02-20 18:45:17
您可以使用coalesce函数返回first not null结果,虽然不确定返回单元格是什么意思,但我想您已经明白了
with xx as
(select 'email@mail.com' 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
发布于 2017-02-21 21:31:21
我最终让它像这样工作:
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"
https://stackoverflow.com/questions/42304032
复制相似问题