问题描述
嗨,克里斯/康纳,
我有一个下面的查询输出:
您能否帮助修改我上面的查询以实现此目的。
我有一个下面的查询输出:
select tab1.usr, tab2.salary from tab1 LEFT JOIN tab2 ON (tab1.usr = tab2.usr and tab1.name = tab2.name); USR salary ----- ------- 1111 5001 2222 NULL 3333 NULL Since usr: 2222 not exists in tab2 I am trying to get the output like below: USR salary ----- ------- 1111 5001 2222 NULL 3333 'NOT FOUND'
您能否帮助修改我上面的查询以实现此目的。
专家解答
所以你想知道你是否加入了一行,但是当外部联接表中没有匹配的行时,该列是空的?
如果是这样,请检查联接列的值。如果这不是null,则显示该列。否则返回
您可以在案例表达式或解码中执行此操作:
(3333的名称不匹配,我猜您应该是相同的,或者您只是想加入usr...)
如果是这样,请检查联接列的值。如果这不是null,则显示该列。否则返回
您可以在案例表达式或解码中执行此操作:
create table tab1
(
usr number,
name varchar2(10)
);
create table tab2
(
usr number,
name varchar2(10),
salary number
);
insert into tab1
values (1111, 'Jerry');
insert into tab1
values (2222, 'John');
insert into tab1
values (3333, 'Scott');
insert into tab2
values (1111, 'Jerry', 5001);
insert into tab2
values (3333, 'Jerry', NULL);
commit;
select tab1.usr, tab2.usr ,
case
when tab2.usr is not null then
to_char(tab2.salary)
else
'NOT FOUND'
end case_sal,
decode( tab2.usr , null , 'NOT FOUND', to_char(tab2.salary) ) dec_sal
from tab1
left join tab2
on tab1.usr = tab2.usr;
USR USR CASE_SAL DEC_SAL
1111 1111 5001 5001
3333 3333
2222 NOT FOUND NOT FOUND (3333的名称不匹配,我猜您应该是相同的,或者您只是想加入usr...)
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




