sql select语句显示结果,如果source=B存在,则使用source B生成结果,否则使用source O生成结果

sql select语句显示结果,如果source=B存在,则使用source B生成结果,否则使用source O生成结果,sql,Sql,我想从报表源“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 a

我想从报表源“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;
输出示例:

代表id代表姓名代表状态代表来源cmp代表id cmp公司名称cmp公司名称

100 REP-2000 A O 144 ASM辅助支持管理

120 REP-9900 A B 144 ASM辅助支持管理

如果rport源为B,我需要结果。如果公司没有来自此源的报告,则显示报告源为O的报告

因此,在这种情况下,要显示的结果是:

120 REP-9900 A B 144 ASM辅助支持管理


我认为这将对您有所帮助:(当您想在rep_source中选择char'B'时,如果存在其他'O'。请使用下面的代码。)

否则,如果要获取具有“B”或“O”值的rep_源。请这样做:

     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'

到目前为止,您尝试了什么…?
r.rep_source='B'或r.rep_source='O'
如果报告源为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 ='B' or r.rep_source ='O'