Oracle: подзапрос с одной строкой возвращает более одной строки - PullRequest
0 голосов
/ 27 августа 2018

Основываясь на других вопросах, я считаю, что мне нужен коррелированный подзапрос, но я не могу понять синтаксис. Мой подвыбор создает несколько строк на номер задания.

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 Ответ

0 голосов
/ 27 августа 2018

Почему бы не просто

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

Примечание к комментариям, которые я вставил в код.

...