原始查询结果如下
市 区 编号 姓名 年龄
A B 1 王XX  26
A B 2 李XX  33
A B 3 赵XX  12
A c 1 李XX  36
...
D F G 李XX  44
想利用cross join 和 rownum 输出如下结果(假定最多4个编号固定 不满4个输出null)
市 区 编号 姓名 年龄
A B 1 王XX  26
A B 2 李XX  33
A B 3 赵XX  12
A B 4 null  null
A c 1 李XX  36
A c 2 null  null
A c 3 null  null
A c 4 null  null
...
D F G 李XX  44有没有最简洁的方法写上面的语句 谢谢大家

解决方案 »

  1.   

    前面1 2 3 4 1 2 3 4
    最后一条D F G 怎么理解?
      

  2.   

    select v2.*, t.姓名, t.年龄 from
    (select distinct t1.市, t1.区, v1.编号 from 原表 t1,
     (select 1 编号 from dual
      union all
      select 2 编号 from dual
      union all
      select 3 编号 from dual
      union all
      select 4 编号 from dual
     ) v1
    ) v2, 原表 t
    where v2.市=t.市(+) and v2.区=t.区(+) and v2.编号=t.编号(+)
    order by ...
      

  3.   

    能用join 写吗 我用的是g11 已经不支持(+)了 谢谢
      

  4.   

    select ... from (...) v2 left outer join t on ... order by ...
      

  5.   

    里面那个应该是cross join吧?
      

  6.   

    附加一个问题 问完结贴
    A B C D
    -------
    a b 1 1
    a b 1 2
    a b 1 3
    a b 2 1
    a b 2 2
    ...
    a c 1 1
    a c 1 2
    a c 1 3
    a c 2 1
    ...select distinct A , B , D from table
    能得到
    a b 1
    a b 2
    a b 3
    a c 1
    a c 2
    a c 3
    是吗?
      

  7.   


    可以得到的,我在oracle 10g下面试过。