ORACLE SQL: объединение 2 строк из 2 отдельных запросов выбора - PullRequest
0 голосов
/ 04 мая 2018

Здравствуйте, я новичок в SQL, и у меня есть проблема. У меня 3 таблицы работы, выручка и стоимость. job.unid = cost.job_unid и yield.job_unid

Я хочу найти общий доход и стоимость для каждой работы, а затем найти прибыль для каждой работы в одной строке:

Заголовки выглядят примерно так: № задания, Общий доход, Общая стоимость, Прибыль (Rev-Cost)

Я попытался сделать один запрос, но после поиска в Интернете решений мне показалось, что я должен запросить доход и стоимость отдельно, а затем объединить с помощью Union All.

Сейчас я делаю это:

  select m,
rlc,
rvatlc,
rtotlc,
clc,
cvatlc,
ctotlc
from(

(select decode(j.consolno,null,j.shpno,j.consolno) m,

sum(nvl(r.amtlc,0)) rlc,
sum(nvl(r.vatamtlc,0)) rvatlc,
sum(nvl(r.amtlc,0))+sum(nvl(r.vatamtlc,0)) rtotlc,
0 clc,
0 cvatlc,
0 ctotlc


from 
job j
full join revenue r on j.unid=r.job_unid
where j.voidby is  null and decode(j.consolno,null,j.shpno,j.consolno)='SHSEM00131'
group by decode(j.consolno,null,j.shpno,j.consolno)
)







union all




(select decode(j.consolno,null,j.shpno,j.consolno) m,


0 rlc,
0 rvatlc,
0 rtotlc,
sum(nvl(c.amtlc,0)) clc,
sum(nvl(c.vatamtlc,0)) cvatlc,
sum(nvl(c.amtlc,0))+sum(nvl(c.vatamtlc,0)) ctotlc


from 
job j, cost c 
where j.voidby is  null and j.unid=c.job_unid and decode(j.consolno,null,j.shpno,j.consolno)='SHSEM00131'
group by decode(j.consolno,null,j.shpno,j.consolno)
))

Результат: Я не уверен, что вы видите, но это 2 строки: 1 - доход, 1 - стоимость.
Я хочу объединить эти 2 строки

результат запроса jpg

Если кто-нибудь сможет мне помочь, я буду очень признателен! Спасибо заранее!

1 Ответ

0 голосов
/ 04 мая 2018

Попробуй это.

   select m,
    sum(rlc),
    sum(rvatlc),
    sum(rtotlc),
    sum(clc),
    sum(cvatlc),
    sum(ctotlc)
    from(

    (select decode(j.consolno,null,j.shpno,j.consolno) m,

    sum(nvl(r.amtlc,0)) rlc,
    sum(nvl(r.vatamtlc,0)) rvatlc,
    sum(nvl(r.amtlc,0))+sum(nvl(r.vatamtlc,0)) rtotlc,
    0 clc,
    0 cvatlc,
    0 ctotlc


from 
job j
full join revenue r on j.unid=r.job_unid
where j.voidby is  null and decode(j.consolno,null,j.shpno,j.consolno)='SHSEM00131'
group by decode(j.consolno,null,j.shpno,j.consolno)
)

union all

(select decode(j.consolno,null,j.shpno,j.consolno) m,


0 rlc,
0 rvatlc,
0 rtotlc,
sum(nvl(c.amtlc,0)) clc,
sum(nvl(c.vatamtlc,0)) cvatlc,
sum(nvl(c.amtlc,0))+sum(nvl(c.vatamtlc,0)) ctotlc


from 
job j, cost c 
where j.voidby is  null and j.unid=c.job_unid and decode(j.consolno,null,j.shpno,j.consolno)='SHSEM00131'
group by decode(j.consolno,null,j.shpno,j.consolno)
)) group by m;
...