при запуске следующего запроса в SQL Developer, который используется для вычисления количества секунд в секундах, количества секунд в день пятницы, количества секунд с 00:00:00 в 07:30:00 для каждого вызовафункция группы здесь не допускается при запуске сложного запроса
with finala as (
select CONTACT_ID,LINE_ID, sum(sec) secs, nvl(sum(fri),0) fris, nvl(sum(mrn),0) mrns
from (
select CONTACT_ID,LINE_ID, (least(E_DATE, dt+1)-greatest(S_DATE, dt))*24*60*60 sec, case when trunc(dt) - trunc(dt, 'iw') = 4 then (least(dt+1, E_DATE) - greatest(dt, S_DATE)) * 24*60*60 end fri, case when (((least(dt+7.5/24, E_DATE) - greatest(dt, S_DATE)) * 24*60*60)>0 and trunc(dt) - trunc(dt, 'iw') <> 4) then ((least(dt+7.5/24, E_DATE) - greatest(dt, S_DATE)) * 24*60*60) end mrn
from (
select CONTACT_ID,LINE_ID, S_DATE, E_DATE, trunc(S_DATE)+level-1 dt
from CONTACTS
where CONTACTS.LINE_ID = 2
connect by trunc(S_DATE)+level-1<=trunc(E_DATE)
and prior dbms_random.value is not null and prior CONTACTS.CONTACT_ID = CONTACTS.CONTACT_ID
)
)
group by CONTACT_ID,LINE_ID
)
select LINE_ID, SUM(secs) into all_seconds ,SUM(fris) into friday_seconds ,SUM(mrns)into twelve_to_seven_second from finala
group by LINE_ID;
где all_seconds
и friday_seconds
и twelve_to_seven_second
являются переменными для хранения окончательных данных,
но компилятор даст ошибке
ORA-00934: group function is not allowed here 00934. 00000 - "group function is not allowed here"
@select LINE_ID, SUM(secs) into all_seconds ,SUM(fris) into friday_seconds ,SUM(mrns)into twelve_to_seven_second from finala
Почему?
[EDIT], как это предлагается в ответ, но все та же ошибка:
select LINE_ID, SUM(secs) into all_seconds ,SUM(fris) into friday_seconds ,SUM(mrns)into twelve_to_seven_second
from (
with finala as (
select CONTACT_ID,LINE_ID, sum(sec) secs, nvl(sum(fri),0) fris, nvl(sum(mrn),0) mrns
from (
select CONTACT_ID,LINE_ID, (least(E_DATE, dt+1)-greatest(S_DATE, dt))*24*60*60 sec, case when trunc(dt) - trunc(dt, 'iw') = 4 then (least(dt+1, E_DATE) - greatest(dt, S_DATE)) * 24*60*60 end fri, case when (((least(dt+7.5/24, E_DATE) - greatest(dt, S_DATE)) * 24*60*60)>0 and trunc(dt) - trunc(dt, 'iw') <> 4) then ((least(dt+7.5/24, E_DATE) - greatest(dt, S_DATE)) * 24*60*60) end mrn
from (
select CONTACT_ID,LINE_ID, S_DATE, E_DATE, trunc(S_DATE)+level-1 dt
from CONTACTS
where CONTACTS.LINE_ID = 2
connect by trunc(S_DATE)+level-1<=trunc(E_DATE)
and prior dbms_random.value is not null and prior CONTACTS.CONTACT_ID = CONTACTS.CONTACT_ID
)
)
group by CONTACT_ID,LINE_ID
)
select LINE_ID,secs,fris,mrns from finala
)
group by LINE_ID;
@GuillaumeF. можете ли вы предложить вам предложение в качестве ответа? –
Я удалил свой ответ, так как это не помогло. Если Oracle не позволяет этого, у вас не может быть более одного 'в таблицу' за выбор. –
Я хочу получить результат в переменные, а затем вставить их с помощью 'insert into' в другую таблицу, могу ли я это сделать? –