Форматирование вывода запроса Oracle

0

Я выполняю следующий запрос к схеме в базе данных 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 ответ

1
Лучший ответ

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

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

Изображение 174551

демонстрация

  • 0
    @ Tim..я работает нормально, но значения столбца TASKNAME идут разрозненными буквами, т.е. P rocessmanager, DBA user, F lowcoordinator .
  • 0
    @ Aarie Звучит как проблема с презентацией, а не с моим запросом. Проверьте кодировку для начала.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню