Правка - это сработавшее решение:
Эта проблема, похоже, связана с автоматически генерируемыми именами столбцов, которые в конечном итоге слишком длинные для оракула.Чтобы избежать этой проблемы, запрос может явно указать имена столбцов CTE, как показано ниже:
with
x (col1, col2, col3, col4) as ( -- columns are named here
select distinct col1, col2, col3, col4 from t
)
select col1, sum(col2), sum(col3)
from x
group by col1
Решение № 2 (не работало в инструменте) :
Если используемый вами инструмент не поддерживает подзапросы, вы все равно можете обмануть его, создав вместо этого представление.Например:
create view view1 as select distinct col1, col2, col3, col4 from t
Затем просто запустите запрос, который использует его:
select col1, sum(col2), sum(col3) from view1 group by col1
Результат:
COL1 SUM(COL2) SUM(COL3)
----- --------- ---------
REF02 90 30
REF01 60 120
Решение № 3 (чтотакже не работал в инструменте) :
select col1, sum(col2), sum(col3) from (
select distinct col1, col2, col3, col4 from t
) x
group by col1
Данные, использованные для тестирования:
Для справки, я использовал скрипт данных:
create table t (
col1 varchar2(10),
col2 number(6),
col3 number(6),
col4 number(6)
);
insert into t (col1, col2, col3, col4) values ('REF01', 10, 50, 1);
insert into t (col1, col2, col3, col4) values ('REF01', 10, 50, 1);
insert into t (col1, col2, col3, col4) values ('REF01', 20, 40, 1);
insert into t (col1, col2, col3, col4) values ('REF01', 20, 40, 1);
insert into t (col1, col2, col3, col4) values ('REF01', 30, 30, 1);
insert into t (col1, col2, col3, col4) values ('REF02', 40, 20, 1);
insert into t (col1, col2, col3, col4) values ('REF02', 50, 10, 1);
insert into t (col1, col2, col3, col4) values ('REF02', 50, 10, 1);