Форматирование вывода запроса Oracle - PullRequest
0 голосов
/ 22 января 2019

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

SELECT USERNAME, FULLNAME, DEPARTMENT, TASKNAME 
  FROM USERDB t1 
  JOIN USERDB_TASKS t3 ON t1.USERID=t3.USERID 
  JOIN TASKS t2 ON t3.TASKSID=t2.TASKSID;

Здесь таблица USERDB содержит имена столбцов USERID, USERNAME, FULLNAME, DEPARTMENT. Таблица USERDB_TASKS содержит имена столбцов USERID, TASKSID. Таблица TASKS содержит имена столбцов TASKSID, TASKNAME. Для конкретного пользователя USERID будет одинаковым во всех таблицах. Аналогично, TASKSID для конкретной задачи будет одинаковым во всех таблицах.

Я получаю вывод в следующем формате:

USERNAME FULLNAME     DEPARTMENT TASKNAME
duryo    dur yogeli   IT         Domain admin
duryo    dur yogeli   IT         Session user
rected   rec tedenson SALES      Process manager
rected   rec tedenson SALES      DBA user
rected   rec tedenson SALES      Flow coordinator 
................................................

Я имею в виду, что для одного и того же пользователя в последнем столбце есть несколько имен задач.

Формат вывода, который я хочу создать, показан ниже:

USERNAME FULLNAME     DEPARTMENT TASKNAME
duryo    dur yogeli   IT         Domain admin, Session user
rected   rec tedenson SALES      Process manager, DBA user, Flow coordinator

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

Любая подсказка будет оценена. Спасибо!

1 Ответ

0 голосов
/ 22 января 2019

Попробуйте использовать LISTAGG:

SELECT
    USERNAME,
    FULLNAME,
    DEPARTMENT,
    LISTAGG(TASKNAME, ', ') WITHIN GROUP (ORDER BY TASKNAME) TASKNAME
FROM yourTable
GROUP BY
    USERNAME,
    FULLNAME,
    DEPARTMENT;

enter image description here

Демо

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