我正在针对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查询本身来生成格式化的输出。
任何线索将不胜感激。谢谢!
答案 0 :(得分:1)
尝试使用LISTAGG
:
SELECT
USERNAME,
FULLNAME,
DEPARTMENT,
LISTAGG(TASKNAME, ', ') WITHIN GROUP (ORDER BY TASKNAME) TASKNAME
FROM yourTable
GROUP BY
USERNAME,
FULLNAME,
DEPARTMENT;