Oracle insert group by 问题

fengshengjie 2018-09-12 01:02:44
declare
v_F1 pls_integer := 0;
begin
insert into TABLE1(F1, F2, F3)
select v_F1, A.F2, sum(A.F3) as F3
from TABLE2 A
group by F2;
end;

这样的语法,会报“不是 GROUP BY 表达式”。如果 select 后面的 v_F1直接换成常数就可以。但是相同的语法,在SQLServer中就没有问题。求救!
...全文
701 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

declare
v1_1 number :=22;
begin
insert into cs1.t2 select v1_1,bm1,bm2,sum(sl2) from cs1.t1 group by bm1,bm2;
/* for rr in (select v1_1,bm1,bm2,sum(sl2)as nn from cs1.t1 group by bm1,bm2)
loop
dbms_output.put_line('v1_1'||rr.v1_1||' bm1'||rr.bm1||' bm2'||rr.bm2||' sum'||rr.nn);
insert into cs1.t2 values (rr.v1_1,rr.bm1,rr.bm2,rr.nn);
end loop;
*/
end;
11.2测试没有问题。

12.2.0.1
测也ok
create user cs1 identified by cs1;
grant dba to cs1;
CREATE TABLE "CS1"."T1"
( "BM1" VARCHAR2(20),
"BM2" VARCHAR2(20),
"SL1" NUMBER(*,0),
"SL2" NUMBER(*,0),
"SJ" NUMBER(*,0)
)
create table cs1.t2 (n1 number,n2 varchar(50) ,n3 varchar(50) ,n4 number )
select * from cs1.t1 --for update;

BM1 BM2 SL1 SL2 SJ
a101 a01 200 20 1
a101 a01 200 30 2
a101 a01 200 50 3
a101 a01 200 100 4
a102 a03 210 80 1

select * from cs1.t2;
declare
v1_1 number :=22;
begin
insert into cs1.t2 select v1_1,bm1,bm2,sum(sl2) from cs1.t1 group by bm1,bm2;
commit;
end;
select * from cs1.t2

可乐乐可 2018-09-13
  • 打赏
  • 举报
回复
 insert into TABLE1(F1, F2, F3)
select v_F1, t.F2,t.f3(select A.F2, sum(A.F3) as F3
from TABLE2 A
group by F2) t;
可乐乐可 2018-09-13
  • 打赏
  • 举报
回复
select v_F1, A.F2, sum(A.F3) as F3
from TABLE2 A
group by F2;
fengshengjie 2018-09-12
  • 打赏
  • 举报
回复
如果select 后面所列举的字段没有变量,或者把变量改成常量,就不会报错。
fengshengjie 2018-09-12
  • 打赏
  • 举报
回复
弄明白了 这个错误了。
如果Table1 表中有一个字段默认值为序列.nextval,上面的语句执行的时候就会报 group by表达式错误。Oracle版本为12C,这有点坑爹。怎么解决呢?大神们救命
fengshengjie 2018-09-12
  • 打赏
  • 举报
回复
把 v_F1 加group by 报一样的错误
yaiger 2018-09-12
  • 打赏
  • 举报
回复
不应该吧.

实在不行就把v_F1加到group by 里面,没有影响的

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧