Oracle: вывод одного запроса на ввод другого запроса - PullRequest
0 голосов
/ 09 октября 2018

Мне нужно объединить два запроса, вывод первого запроса должен быть вводом для второго запроса в предложении where. Как этого добиться?

Select
      Distinct
              TRNSFR_SRC_ID,
              DESCR_ORG,
              SUBJECT,
              CRSE_NBR,
              DESCR1_FRMVW,
              SUBJECT_TO,
              CATALOG_NBR_TO,

    FROM
              TRNSFR_CRSE
    WHERE
              ORG_ID = ?



    Select 
      Distinct 
              ATTR_VALUE
      From TRNSFR_CRSE
      Where 
              ORG_ID = ?
              and SUBJECT = ?
              and CRSE_NBR =  ?
              and SUBJECT_TO = ?
              and CATALOG_NBR_TO = ?
              and CRSE_ATTR = 'GHH'"

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Oracle может сделать это действительно легко, но я не уверен, как применить это в этом случае.Но что-то вроде этого:

select Distinct ATTR_VALUE
from TRNSFR_CRSE
where (ORG_ID, SUBJECT, CRSE_NBR, SUBJECT_TO, CATALOG_NBR_TO) IN
          (Select TRNSFR_SRC_ID, SUBJECT, CRSE_NBR, SUBJECT_TO, CATALOG_NBR_TO
           from TRNSFR_CRSE
           where ORG_ID = ?
          ) and
       CRSE_ATTR = 'GHH'

Вы можете использовать = вместо in, если знаете, что подзапрос должен возвращать не более одной строки.

0 голосов
/ 09 октября 2018

Если я предполагаю, что выходные данные 1-го запроса являются входными данными для второго запроса, используйте ниже

Select 
  Distinct 
          ATTR_VALUE
  From TRNSFR_CRSE
  Where 
          (ORG_ID,SUBJECT,CRSE_NBR,SUBJECT_TO,,CATALOG_NBR_TO) in 
   (Select
         DESCR_ORG,
          SUBJECT,
          CRSE_NBR,
          SUBJECT_TO,
          CATALOG_NBR_TO,

FROM
          TRNSFR_CRSE
WHERE
          ORG_ID = ?)

          and CRSE_ATTR = 'GHH'"
...