Oracle:单行子查询 Returns 多行
Oracle: Single Row Subquery Returns More than One Row
基于其他问题,我认为我需要一个相关的子查询,但我不太明白语法。我的子选择为每个职位编号创建了多行。
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
注意我在代码中添加的注释。
基于其他问题,我认为我需要一个相关的子查询,但我不太明白语法。我的子选择为每个职位编号创建了多行。
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
注意我在代码中添加的注释。