Ошибка говорит о том, что число и тип данных столбцов, используемых в UNION, должны совпадать.Посмотрите на этот простой пример:
Отсутствует col2
во 2-м select
:
SQL> select 100 col1, 'a' col2 from dual
2 union
3 select 300 col1 from dual;
select 100 col1, 'a' col2 from dual
*
ERROR at line 1:
ORA-01789: query block has incorrect number of result columns
Неверный col2
тип данных во 2-м select
:
SQL> select 100 col1, 'a' col2 from dual
2 union
3 select 300 col1, sysdate from dual;
select 100 col1, 'a' col2 from dual
*
ERROR at line 1:
ORA-01790: expression must have same datatype as corresponding expression
Наконец, путь:
SQL> select 100 col1, 'a' col2 from dual
2 union
3 select 300 col1, 'b' col2 from dual;
COL1 C
---------- -
100 a
300 b
SQL>
Что касается вашего кода, кажется, что вы не можете этого сделать - по крайней мере, это не будет иметь смысла, как выGROUP BY
все столбцы , используемые в списке столбцов SELECT
, которые не агрегированы:
select posting_date,
misti_id,
material,
case
when mtl_desc is null then short_text
else mtl_desc
end as mtl_desc,
vend_name1,
recipient,
qty,
amt_grp_curr,
--
sum(amg_grp_curr) sum_result
from cost_dm5_daily
where cost_center = 'C1003'
group by
posting_date,
misti_id,
material,
case
when mtl_desc is null then short_text
else mtl_desc
end as mtl_desc,
vend_name1,
recipient,
qty,
amt_grp_curr
order by posting_date desc;
Возможно, аналитическая форма функции SUM
можетПомогите.Например:
select posting_date,
misti_id,
material,
case
when mtl_desc is null then short_text
else mtl_desc
end as mtl_desc,
vend_name1,
recipient,
qty,
amt_grp_curr,
--
sum(amg_grp_curr) over(partition by posting_date order by null) sum_result
from cost_dm5_daily
where cost_center = 'C1003'
order by posting_date desc;