查看以从oracle中的多个表执行选择

时间:2016-06-23 08:27:44

标签: sql oracle

示例视图:

create or replace view test_sel as
    select * 
    from xyz 
    where processdte in (select distinct PROCESS_DTE 
                         from ABC 
                         where STATUS = 'Y'
                        );

要求:

如果状态为是,则应执行表的选择,否则应显示消息,说明请等待或等等。

请指导如何实现相同的目标

2 个答案:

答案 0 :(得分:0)

这样的事情可能是:

create or replace view test_sel as
    select xyz.* ,
           case abc.STATUS 
           when 'Y' then ''
           else 'Please wait'
            end as Message
    from xyz join (select PROCESS_DTE, MAX(STATUS) as STATUS /* guessing Status Y/N/null*/
                     from ABC 
                    group by PROCESS_DTE) abc
       on xyz.processdte = abc.PROCESS_DTE;

答案 1 :(得分:0)

Sorry to post it again but not able to comment because of low experience.

Just Changed abc.processdte to abc.PROCESS_DTE in last line.

CREATE OR REPLACE VIEW test_sel AS   SELECT xyz.* ,
    CASE abc.STATUS
      WHEN 'Y'
      THEN ''
      ELSE 'Please wait'
    END AS MESSAGE   FROM xyz   JOIN
    (SELECT PROCESS_DTE,
      MAX(STATUS) AS STATUS
      /* guessing Status Y/N/null*/
    FROM ABC
    GROUP BY PROCESS_DTE
    ) abc   ON xyz.processdte = abc.PROCESS_DTE;