Oracle: подзапрос с одной строкой возвращает более одной строки
Основываясь на других вопросах, я считаю, что мне нужен коррелированный подзапрос, но я не могу понять синтаксис. Мой подвыбор создает несколько строк на номер задания.
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
1 ответ
Решение
Почему не просто
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
Обратите внимание на комментарии, которые я вставил в код.