Проблема в том, что rowid
является уникальным для строки, и вы намереваетесь select
distinct
значения поля. Предполагая, что у вас есть эта схема:
create table test(
a int primary key,
b int not null
);
insert into test(a, b)
values (1, 1);
insert into test(a, b)
values (2, 1);
insert into test(a, b)
values (3, 1);
insert into test(a, b)
values (4, 4);
Если вы запустите
select min(rowid), b
from test
group by b;
, это приведет к двум записям, поскольку для b
есть два разных значения. Я выбрал наименьшее rowid
для сопряжения с этим.
Вы даже можете объединить rowid
вхождений строки:
select LISTAGG(ROWIDTONCHAR(rowid), ', ') WITHIN GROUP (ORDER BY rowid) "rowids", b
from test
group by b;
См .: http://sqlfiddle.com/#! 4 / ee73a / 7