有表A,有a,b列如下: A       B
 1       12
 null    12 
 null    12 
 null    12 
 null    12 
 null    12 
 null    12 
 null    12 
 123     121
 null    121
 null    121 
 null    121 
 null    122 
 null    122 
 null    122 
 134     122 执行语句后,希望的结果如下
 A       B
 1       12
 1       12 
 1       12 
 1       12 
 1       12 
 1       12 
 1       12 
 1       12 
 123     121
 123     121
 123     121 
 123     121 
 134     122 
 134     122 
 134     122 
 134     122 

解决方案 »

  1.   

    with a as (
      select 1    a, 12  b from dual union all
      select null a, 12  b from dual union all
      select null a, 12  b from dual union all
      select null a, 12  b from dual union all
      select null a, 12  b from dual union all
      select null a, 12  b from dual union all
      select null a, 12  b from dual union all
      select null a, 12  b from dual union all
      select 123  a, 121 b from dual union all
      select null a, 121 b from dual union all
      select null a, 121 b from dual union all
      select null a, 121 b from dual union all
      select null a, 122 b from dual union all
      select null a, 122 b from dual union all
      select null a, 122 b from dual union all
      select 134  a, 122 b from dual)SELECT b.a, a.b
      FROM a, (SELECT * FROM a WHERE a IS NOT NULL) b
     WHERE a.b = b.b
      

  2.   


    select decode(a.a,null,b.a,a.a) a, a.b
    from a,(
         select * from a where a is not null) b
    where a.b=b.b
             A          B
    ---------- ----------
             1         12
             1         12
             1         12
             1         12
             1         12
             1         12
             1         12
             1         12
           123        121
           123        121
           123        121
           123        121
           134        122
           134        122
           134        122
           134        122