表 a  id  name  classid
      1    222   1
      2    333   2
表 b  classid classname
      1        gg
      
我要建个视图把表a的classid转成b的calssname  如果 a的 classid  b里没有则保持原值

查询的结果
id  name classname/id
 1  222  gg
 2  333  2
 

解决方案 »

  1.   

    select a.id,a.name,case when b.classname is not null then b.classname else a.classid end 'classname/id '
    from a
    left join b on a.classid=b.classid
      

  2.   

    select a.id,a.name,nvl(b.classname,a.classid) classname/id 
    from a,b 
    where a.classid=b.classid(+)
      

  3.   

    select a.id,a.name,nvl(b.classname,a.classid) "classname/id"
      from a,b 
     where a.classid=b.classid(+);
      

  4.   

    select a.id, a.name, nvl(b.classname,a.classid)
    from a
    left join b
    on a.id=b.id用left join就可以搞定。
      

  5.   

    select a.id, a.name, nvl(b.classname,a.classid)
    from a
    left join b
    on a.id=b.id
    呵呵,几种写法都被大家写了,我就copy一个贴出来吧,哈哈!
      

  6.   


    SELECT A.ID,A.NAME,DECODE(A.CLASSID,B.CLASSID,B.CLASSNAME,A.CLASSID) CLASSID
    FROM A,B
    WHERE A.ID=B.CLASSID(+)--结果
        ID NAME CLASSID
    1 1 222 GG
    2 2 333 2
      

  7.   

    CREATE VIEW VW_A
    AS
    SELECT A.ID,A.NAME,DECODE(A.CLASSID,B.CLASSID,B.CLASSNAME,A.CLASSID) CLASSID
    FROM A, B
    WHERE A.ID=B.CLASSID(+)
      

  8.   


    select a.id,a.name,nvl(b.classname,a.classid) classname/id 
    from a,b 
    where a.classid=b.classid(+)左联接的问题,楼主真该多看看SQL的基础知识