ORACLE SQL:合并 2 行 2 个单独的 select 查询
ORACLE SQL: Combining 2 rows of 2 separate select queries
你好,我是 SQL 的新手,我有一个问题。我有 3 表工作、收入和成本。 job.unid = cost.job_unid 和 revenue.job_unid
我想找出每项工作的总收入和成本,然后在一行中找到每项工作的利润:
headers 看起来像这样:
作业编号、总收入、总成本、损益表 (Rev-Cost)
我尝试进行单个查询,但在互联网上搜索解决方案后,我似乎应该分别查询 Revenue 和 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 是成本。
我想合并这两行
query result 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;
你好,我是 SQL 的新手,我有一个问题。我有 3 表工作、收入和成本。 job.unid = cost.job_unid 和 revenue.job_unid
我想找出每项工作的总收入和成本,然后在一行中找到每项工作的利润:
headers 看起来像这样: 作业编号、总收入、总成本、损益表 (Rev-Cost)
我尝试进行单个查询,但在互联网上搜索解决方案后,我似乎应该分别查询 Revenue 和 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 是成本。
我想合并这两行
query result 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;