簡體   English   中英

ORACLE SQL:合並 2 行 2 個單獨的選擇查詢

[英]ORACLE SQL: Combining 2 rows of 2 separate select queries

你好,我對 SQL 很陌生,我有一個問題。 我有 3 表工作、收入和成本。 job.unid = cost.job_unid 和 Revenue.job_unid

我想找到每項工作的總收入和成本,然后在一行中找到每項工作的利潤:

標題看起來像這樣:工作編號、總收入、總成本、損益 (Rev-Cost)

我試圖做一個單一的查詢,但在互聯網上搜索解決方案后,我似乎應該單獨查詢收入和成本,然后使用聯合所有進行組合。

現在我這樣做:

  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 是成本。
我想結合這兩行

查詢結果.jpg

嘗試這個。

   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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM