如果存在,我想从报告来源'B'中选择报告,否则报告来自报告来源'O'
select r.rep_id,
r.rep_name,
r.rep_status,
r.rep_source
o.cmp_id,
o.cmp_company_name,
o.cmp_company_al
from company o,
report r
where o.cmp_id = r.rep_cmp_id
and r.rep_status in ('N','A')
and r.rep_source = ???decode;
输出示例:
rep_id rep_name rep_status rep_source cmp_id cmp_company_name cmp_company_name_al
100 REP-2000 A O 144 ASM协助支持管理
120 REP-9900 A B 144 ASM协助支持管理
如果rport源是B,我想要结果。如果该公司没有来自该来源的报告,则显示包含报告源的报告O
所以在这种情况下显示的结果是:
120 REP-9900 A B 144 ASM协助支持管理
答案 0 :(得分:1)
我认为这会对您有所帮助:(当您想要在其中存在时,在rep_source中选择char' B' O'。使用以下代码。)
select r.rep_id,
r.rep_name,
r.rep_status,
CASE WHEN r.rep_source = 'B' THEN 'B' ELSE 'O' END AS rep_source
o.cmp_id,
o.cmp_company_name,
o.cmp_company_al
from company o,
report r
where o.cmp_id = r.rep_cmp_id
and r.rep_status in ('N','A')
如果你想用' B'来获得rep_source。或者' O'值。跟着这个:
select r.rep_id,
r.rep_name,
r.rep_status,
r.rep_source,
o.cmp_id,
o.cmp_company_name,
o.cmp_company_al
from company o,
report r
where o.cmp_id = r.rep_cmp_id
and r.rep_status in ('N','A')
and r.rep_source ='B' or r.rep_source ='O'