一个表列出了包含任何一个作业的各种employee_id。
员工姓名列在单独的表中。动作名称也在另一个表中。
汇总员工ID的listagg语句很简单,但需要列出员工姓名。
此外,每个作业中的操作ID都需要与该操作的员工相关联。
select job.id,
listagg(hist.empl_id, ',') within group (order by job.id) as emp_list,
listagg(hist.ACTION_ID, ',') within group (order by job.id) as actionid_list
from jobs job,
job_action_log hist
where job.id = hist.job_id
group by job.id;
这正确地返回了jobid,聚合的empid和聚合操作ID。
job employee action
-------------------------------
14 9, 12, 14, 9 5, 7, 88, 5
我们需要的是从employee表返回员工姓名,从另一个表中列出操作名称和操作名称,并将正确的员工与正确的操作相关联。
期望的结果:
jobid employee name action
------------------------------------------------------
14 Bob, Joe, Sam, Linda sweep, glass, mop, sweep
非常感谢任何建议或帮助。
答案 0 :(得分:2)
只需line = line_parts[0]+line_parts[1]+line_parts[2]+line_parts[3]
其他两个表格,然后在join
中选择必填字段(将其更改为合适)。此外,您应该停止使用旧式连接。
listagg