带有引用id的oracle 11g listagg

时间:2016-04-13 17:31:12

标签: sql oracle11g

一个表列出了包含任何一个作业的各种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

非常感谢任何建议或帮助。

1 个答案:

答案 0 :(得分:2)

只需line = line_parts[0]+line_parts[1]+line_parts[2]+line_parts[3]其他两个表格,然后在join中选择必填字段(将其更改为合适)。此外,您应该停止使用旧式连接。

listagg