table:
   order_no, order_case, case_status
     111       222           B
     111       333           A
     122       444           A
     122       555           A
     133       666           B
     144       777           A
想创建一个view
   结果如下:
order_no, , case_status
     111       B
     122       A
     133       B
     144       A试图需求如下;
  对于同一个order_no ,如果在表里有B,则在视图里显示B,如果没有B,只有A就显示A 请问这个create view的sql 怎么写?    

解决方案 »

  1.   

    CREATE OR REPLACE VIEW V_TABLE
    AS
    SELECT ORDER_NO,
           MAX(DECODE(CASE_STATUS,'B','B','A'))
      FROM TABLE T1
     GROUP BY ORDER_NO;
      

  2.   

    不好意思,刚才贴错了
    table: 
      order_no, order_case, case_status 
        111      222          B 
        111      333          A 
        122      444          A 
        122      555          A 
        133      666          B 
        144      777          A 
    想创建一个view 
      结果如下: 
      order_no, order_case, case_status 
        111      222          B 
        111      333          
        122      444          A 
        122      555          A 
        133      666          B 
        144      777          A 
      

  3.   

    create view v_name
    AS 
    select order_no,max(case_status) from table group by order_no
    ;
      

  4.   


    CREATE OR repalce VIEW v_xxx 
    SELECT order_no,MAX(case_status)
    FROM tableA
    GROUP BY order_no
      

  5.   

    create view v_name 
    AS 
    select order_no,order_case,(select Max(DECODE(CASE_STATUS,'B','B','A')) from table where order_no  = t.order_no)
      from table t
    ;如果是求最大的則改為Max(CASE_STATUS),隻有兩種則用DECODE(CASE_STATUS,'B','B','A')
      

  6.   

    这么写.
    create or replace view test1 as 
    select t.order_no, t.order_case, t1.case_status
      from test t,
           (select order_no, max(case_status) case_status
              from test
             group by order_no) t1
     where t.order_no = t1.order_no
      

  7.   

    还可以这么写.
    create table test(order_no number,order_case number,case_status varchar2(1));
    insert into test values(111,222,'B');
    insert into test values(111,333,'A');
    insert into test values(122,444,'A');
    insert into test values(122,555,'A');
    insert into test values(133,666,'B');
    insert into test values(144,777,'A');
    commit;
    create or replace view test1 as 
    select t.order_no, t.order_case,(select decode(max(case_status),'B',max(case_status),'A') from test t1 where t1.order_no=t.order_no)
    from test t