Как вывести совокупные значения с помощью Group By в Oracle - PullRequest
1 голос
/ 06 ноября 2019

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

SELECT q.USER_ID, q.REPORTS_TO, e.EMAIL
  FROM (SELECT a.USER_ID, a.REPORTS_TO, a.EMAIL
          FROM PortalX.PTX_USERS a
               LEFT OUTER JOIN PortalX.PTX_LDAP_USERS b
                  ON a.USER_ID = b.OWN_ID
         WHERE b.OWN_ID IS NULL) q
       INNER JOIN PortalX.PTX_USERS e ON q.REPORTS_TO = e.USER_ID;

Я не очень знаком с написанием запросов оракула. Любая помощь приветствуется.

Редактировать:

с помощью @Barbaros она является окончательным запросом, который объединяет пользователей в виде списка значений, разделенных запятыми.

SELECT a.REPORTS_TO, a.EMAIL, 
       LISTAGG(a.USER_ID,',') WITHIN GROUP (ORDER BY a.USER_ID) as USERS
  FROM PortalX.PTX_USERS a
  LEFT JOIN PortalX.PTX_LDAP_USERS b
    ON a.USER_ID = b.OWN_ID
   AND a.REPORTS_TO = a.USER_ID
 WHERE b.OWN_ID IS NULL
 GROUP BY a.REPORTS_TO, a.EMAIL;

Ответы [ 2 ]

1 голос
/ 06 ноября 2019

Вы можете использовать такой запрос

SELECT a.REPORTS_TO, a.EMAIL, 
       LISTAGG(a.USER_ID) WITHIN GROUP (ORDER BY a.USER_ID) as USERS
  FROM PortalX.PTX_USERS a
  LEFT JOIN PortalX.PTX_LDAP_USERS b
    ON a.USER_ID = b.OWN_ID
   AND a.REPORTS_TO = a.USER_ID
 WHERE b.OWN_ID IS NULL
 GROUP BY a.REPORTS_TO, a.EMAIL;

, содержащий listagg() функцию

0 голосов
/ 06 ноября 2019

Кажется, вам нужна функция LISTAGG -

SELECT LISTAGG(q.USER_ID), q.REPORTS_TO, e.EMAIL
FROM (SELECT a.USER_ID, a.REPORTS_TO, a.EMAIL
      FROM PortalX.PTX_USERS a
      LEFT OUTER JOIN PortalX.PTX_LDAP_USERS b
                      ON a.USER_ID = b.OWN_ID
      WHERE b.OWN_ID IS NULL) q
      INNER JOIN PortalX.PTX_USERS e ON q.REPORTS_TO = e.USER_ID
GROUP BY q.REPORTS_TO, e.EMAIL;

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