group by の数値指定

 

(8.0.32)

drop table tab1;
create table tab1(col1 int);
insert into tab1 values(1);
insert into tab1 values(1);
insert into tab1 values(2);
insert into tab1 values(2);

select * from tab1;
select col1,count(*) from tab1 group by 1;
select count(*),col1 from tab1 group by 2;

数値指定可能

(19c)

drop table tab1 purge;
create table tab1(col1 int);
insert into tab1 values(1);
insert into tab1 values(1);
insert into tab1 values(2);
insert into tab1 values(2);
commit;

select * from tab1;
select col1,count(*) from tab1 group by 1;
select count(*),col1 from tab1 group by 2;

行1でエラーが発生しました。:
ORA-00979: GROUP BYの式ではありません。
数値指定不可★

 

(23c)
下記初期化パラメーターを設定すれば使用可能
show parameter group_by_position_enabled;
alter session set group_by_position_enabled = true;

 

(15)

drop table tab1;
create table tab1(col1 int);
insert into tab1 values(1);
insert into tab1 values(1);
insert into tab1 values(2);
insert into tab1 values(2);

select * from tab1;
select col1,count(*) from tab1 group by 1;
select count(*),col1 from tab1 group by 2;

数値指定可能

(2022)


drop table tab1;
create table tab1(col1 int);
insert into tab1 values(1);
insert into tab1 values(1);
insert into tab1 values(2);
insert into tab1 values(2);

select * from tab1;
select col1,count(*) from tab1 group by 1;
select count(*),col1 from tab1 group by 2;

メッセージ 164、レベル 15、状態 1、行 10
各 GROUP BY 式には、外部参照ではない列が少なくとも 1 列含まれている必要があります。

数値指定不可★