基本上我想运行以下查询:
INSERT INTO historical_car_stats (historical_car_stats_id, year, month, make, model, region, avg_msrp, count) SELECT my_seq.nextval, '2010', '12', 'ALL', 'ALL', region, sum(avg_msrp * count) / sum(count), sum(count) FROM historical_car_stats WHERE year = '2010' AND month = '12' AND make != 'ALL' GROUP BY region;
它不起作用,因为“此处不允许序列号” SQL错误。我该怎么写,这样Oracle才能让我做我想做的事?
假设您要在使用序列生成密钥之前对数据进行分组,这听起来像您想要的是
INSERT INTO HISTORICAL_CAR_STATS ( HISTORICAL_CAR_STATS_ID, YEAR, MONTH, MAKE, MODEL, REGION, AVG_MSRP, CNT) SELECT MY_SEQ.nextval, year, month, make, model, region, avg_msrp, cnt FROM (SELECT '2010' year, '12' month, 'ALL' make, 'ALL' model, REGION, sum(AVG_MSRP*COUNT)/sum(COUNT) avg_msrp, sum(cnt) cnt FROM HISTORICAL_CAR_STATS WHERE YEAR = '2010' AND MONTH = '12' AND MAKE != 'ALL' GROUP BY REGION)