如果source = B存在则显示结果的sql select语句然后是源B的结果,否则来自源O的结果

时间:2014-11-27 09:29:00

标签: 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
   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协助支持管理

1 个答案:

答案 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'