比如
现在 select a,b,c from table1 union all select a,b,'0' from table2--'0'为补位,没这个参数
我现在要再查,就这样:
select t.a,t.b,t.c from (select a,b,c from table1 union all select a,b,'0' from table2) t.
可是这样会报错,该如何写?

解决方案 »

  1.   

    你的oracle什么版本?在oracle10gR2中是可以的另外,你可以试试select t.a,t.b,t.c from (select a,b,c from table1 union all select a,b,'0' as c from table2) t;
      

  2.   

    select t.a,t.b,t.c from (select a,b,c from table1 union all select a,b,'0' as c from table2) t
      

  3.   

    select t.a,t.b,t.c from (select a,b,c from table1 union all select a,b,'0' as c from table2) t;
      

  4.   

    jiang_xiao (原来秋天)  真大方啊
    以后这样的问题给20就可以了;不然以后想问问题都没分了  :)
      

  5.   

    楼主:
    我的是8i。
    select a,b,c from table1 union all select a,b,'0' from table2
    select a,b,c from table1 union all select a,b,'0' as B from table2
    都可以。是不是其他的问题啊?
      

  6.   

    加个括号试试:
    select t.a,t.b,t.c from (select a,b,c from table1 union all (select a,b,'0' from table2)) t
      

  7.   

    加不加别名没有区别,默认的第一个select的列名,跟第二个select的列名没有关系,只要数据类型一样就行了。这个语句应该是可以执行的。SQL> create table test_1 (a varchar2(2),b varchar2(2),c varchar2(2));Table createdSQL> insert into test_1 values('a','b','c');1 row insertedSQL> commit;Commit completeSQL> create table test_2 (a varchar2(2),b varchar2(2));Table createdSQL> insert into test_2 values('a','b');1 row insertedSQL> commit;Commit completeSQL> select t.a,t.b,t.c from (select a,b,c from test_1 union all select a,b,'0' From test_2) t;A  B  C
    -- -- --
    a  b  c
    a  b  0SQL>
      

  8.   

    类似的问题我也遇到过,应该跟oracle版本有关系。下面是我提的一个类似的问题,至今也没有找到真正的原因在哪儿:
    http://community.csdn.net/Expert/topic/4944/4944769.xml?temp=.2244684可以肯定的是,如果把union all改为union,你的sql无论在哪个版本上都可以成功执行