我做了一些数据,但在执行最后的查询的时候报错,请高手指点一下问题出在哪?
create table t_a(
aid varchar2(2),
a1 numeric,
qty integer
);
insert into t_a values('10',1,45);
insert into t_a values('11',2,456);
insert into t_a values('12',2,544);
insert into t_a values('13',2,5);create table t_b(
bid varchar2(2),
b1 varchar2(2) ,
bname varchar2(10)
);insert into t_a values('10','01','第一');
insert into t_a values('11','02','第二');
insert into t_a values('12','03','第三');create view v_a
as
select aid, right(a1+100,2) as a1,qty from t_a;select sum(v_a.qty) as aqty , (select bname from t_b where t_b.b1 = v_a.a1)  as id
from v_a
group by v_a.a1SQLPL/SQLselect

解决方案 »

  1.   

    补充一下,视图中的right(a1+100,2)这部分,无论改成哪种表达式都会报同样的错误,除非只写a1,但那不是我想要的
      

  2.   

    你一个sqlserver的函数right 放到oracle里面能不报错吗??sqlserver的right函数对应oracle的substr函数。create view v_a
    as
    select aid, substr(a1+100,-2) as a1,qty from t_a;
      

  3.   

    看到我的问题补充了吗?right(a1+100,2)这部分写成to_char(a1)都一样报错,你的写法也一样报错,另外right可以在oracle中使用,你可以生成我写的表试一下
      

  4.   


    ORACLE有right函数?第一次听说。create view v_a as select aid, substr(a1+100,-2) as a1,qty from t_a;
    我这句报错,你能把截图给我看吗?
      

  5.   

    为什么不group by那个bname呢
      

  6.   

    group by bname是不被允许的
      

  7.   

    create view v_a
     as
     select aid, 
     substr(a1+100,-2) as a1,
     qty from t_a;
     
    select sum(a.qty) as aqty,
           b.bname as id,
           a.a1
      from v_a a,
           t_b b
           where  b.b1 = a.a1
     group by a.a1, b.bname
    看看这个是不是你想要的。