Oracle:单行子查询返回多行
基于其他问题,我认为我需要一个相关的子查询,但我不能完全理解语法。我的子选择为每个jobnumber创建多行Oracle:单行子查询返回多行,oracle,subquery,correlated,Oracle,Subquery,Correlated,基于其他问题,我认为我需要一个相关的子查询,但我不能完全理解语法。我的子选择为每个jobnumber创建多行 select distinct projectmaster.projectidentity as PROJECT, jdedwards.jobnumber, (select cast(substr(overagenarrative, 1, 2000) as varc
select distinct projectmaster.projectidentity as PROJECT,
jdedwards.jobnumber,
(select cast(substr(overagenarrative, 1, 2000) as
varchar(4000 byte))
from jlog.approvedjobsoverbudget
LEFT OUTER JOIN jlog.jdedwards
ON jdedwards.jobnumber =
approvedjobsoverbudget.jobnumber) as Overage
from jlog.jdedwards,
jlog.projectjobdetail,
jlog.projectmaster,
jlog.approvedjobsoverbudget
where jdedwards.jobnumber = projectjobdetail.jobnumber
and projectjobdetail.projectidentity = projectmaster.projectidentity
and jdedwards.budgetyear = projectmaster.budgetyear
and jlog.projectmaster.Projectstatus in (2)
and jdedwards.jobnumber = approvedjobsoverbudget.jobnumber
为什么不简单
select distinct projectmaster.projectidentity as PROJECT,
jdedwards.jobnumber,
--
-- this line ...
cast(substr(overagenarrative, 1, 2000) as varchar2(4000 byte) as overage
-- ... instead of all this:
-- (select cast(substr(overagenarrative, 1, 2000) as
-- varchar(4000 byte))
-- from jlog.approvedjobsoverbudget
-- LEFT OUTER JOIN jlog.jdedwards
-- ON jdedwards.jobnumber =
-- approvedjobsoverbudget.jobnumber) as Overage
from jlog.jdedwards,
jlog.projectjobdetail,
jlog.projectmaster,
jlog.approvedjobsoverbudget
where jdedwards.jobnumber = projectjobdetail.jobnumber
and projectjobdetail.projectidentity = projectmaster.projectidentity
and jdedwards.budgetyear = projectmaster.budgetyear
and jlog.projectmaster.Projectstatus in (2)
and jdedwards.jobnumber = approvedjobsoverbudget.jobnumber
注意我在代码中的注释 经过多次尝试和错误,我最终选择了这个版本。谢谢你的反馈。我试图创建一个外部联接,以便获得不包含OVERAGE值的记录。