Зачем оракулу подзапрос с AND & OR возвращать возвращаемый набор результатов wrogn - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть два подзапроса.как показано ниже.первый запрос работает нормально, но второй запрос, который в основном является первым запросом, который я изменил, чтобы использовать AND & OR, не работает в том смысле, что он не возвращает идентификатор, как ожидалось.какие-либо предложения о том, что здесь происходит?

    1. (SELECT * FROM (SELECT  EMPID FROM EVENT_F 
                    INNER JOIN WCINFORMATION_D 
                          ON EVENT_F.JOB_INFO_ROW_WID=  WCINFORMATION_D.ROW_WID
                          INNER JOIN WCANDIDATE_D ON WCCANDIDATE_D.ROW_WID = VENT_F.CANDIDATE_ROW_WID

                WHERE STEP_NAME = 'Offer'
               AND  WCINFORMATION_D.JOB_FAMILY_NAME  IN ('MDP','ELP','Emerging Leader Program','Other')
               AND TITLE  NOT IN ('Student Ambassador Program for Eligible Summer Interns','Student Ambassador')

                  AND  PI_CANDIDATE_NUM = OUTERAPP.PI_CANDIDATE_NUM
                  --limit 1


                  ORDER BY CREATION_DT ASC
                  ) T1 WHERE ROWNUM=1) AS A_ID,
2.(SELECT * FROM (SELECT  EMPID FROM EVENT_F 
                    INNER JOIN WCINFORMATION_D 
                          ON EVENT_F.JOB_INFO_ROW_WID=  WCINFORMATION_D.ROW_WID
                          INNER JOIN WCANDIDATE_D ON WCCANDIDATE_D.ROW_WID = VENT_F.CANDIDATE_ROW_WID

                WHERE STEP_NAME = 'Offer'
               AND  WCINFORMATION_D.JOB_FAMILY_NAME  IN ('MDP','ELP','Emerging Leader Program','Other') or WCINFORMATION_D.JOB_FAMILY_NAME   NOT IN ('MDP','ELP','Emerging Leader Program','Other')
               AND TITLE  NOT IN ('Student Ambassador Program for Eligible Summer Interns','Student Ambassador')

                  AND  PI_CANDIDATE_NUM = OUTERAPP.PI_CANDIDATE_NUM
                  --limit 1


                  ORDER BY CREATION_DT ASC
                  ) T1 WHERE ROWNUM=1) AS A_ID,

1 Ответ

0 голосов
/ 28 сентября 2018

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

SELECT COUNT(CASE WHEN wid.job_family_name IN ('MDP', 'ELP', 'Emerging Leader Program', 'Other') THEN 1 END) job_family_grp1,
       COUNT(CASE WHEN wid.job_family_name IS NULL OR wid.job_family_name NOT IN ('MDP', 'ELP', 'Emerging Leader Program', 'Other') THEN 1 END) job_family_grp2
FROM   event_f ef
INNER  JOIN wcinformation_d wid
ON     ef.job_info_row_wid = wid.row_wid
INNER  JOIN wcandidate_d wcd
ON     wcd.row_wid = ef.candidate_row_wid
WHERE  step_name = 'Offer' -- alias this column name
AND    title NOT IN ('Student Ambassador Program for Eligible Summer Interns', 'Student Ambassador') -- alias this column name;

Скорее всего, вам нужно будет изменить это, чтобы оно работало для вашего конкретного случая (оно должно быть объединено с вашим основным запросом, если выбраны два столбца), так как вы не предоставили достаточно информации вВаш вопрос, чтобы дать нам более широкий контекст.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...