从序列和分组中选择插入

时间:2017-03-07 19:29:28

标签: sql oracle

我想在表tableA中插入一些数据,但我必须使用group bymy_sequence.nextval。不可能在同一个标​​准中使用两者,是否存在任何解决方法?

例如:

insert into tableA (
  taba_id,
  taba_sum,
  taba_date
) select 
  tabb_sequence.nextval,
  sum(tabb_value),
  tabb_date
  from 
  tableB group by (tabb_date);

执行此声明后,我得到了:

ORA-02287: sequence number not allowed here

根据oracle文档,我应该收到此错误。 如何在一个语句中处理序列和分组?

1 个答案:

答案 0 :(得分:4)

这里的问题是因为您的序列没有聚合,因此您有此错误。试试这个:

insert into tableA (
  taba_id,
  taba_date,
  taba_sum
) 
 select tabb_sequence.nextval,
        tabb_date,
        stv
   from (select tabb_date,
                sum(tabb_value) stv,
           from tableB 
          group by tabb_date) a;