数据表中某字段中存有人员id(empid),如下所示:
id   empid
1    4028e4c11e862225011e8aff6446006d
2    4028e4c11e862225011e8aff6446006d,4028e4c11e862225011e8b01f0e4007d,4028e4c11e862225011e8b012ac20079
3    4028e4c11e862225011e8aff6446006d,4028e4c11e862225011e8b01f0e4007d如何通过sql脚本实现如下查询:(主要不清楚将上empid分解)
id   empName
1    张三
2    张三,李四,王五
3    张三,李四

解决方案 »

  1.   

    最好给出完整的表结构,测试数据,计算方法和正确结果.发帖注意事项
    http://topic.csdn.net/u/20091130/21/fb718680-98ff-4afb-98d8-cff2f8293ed5.html?24281
      

  2.   

    人员表结构:
    ID   varchar2(32)    
    Name varchar2(100)
    现有几张记录考情人的表
    ID    varchar2(32)
    empId varchar2(3072)  该字段存放考勤人员的ID
      

  3.   


    with emps as(
    select '4028e4c11e862225011e8aff6446006d' id,'张三' name from dual
    union all
    select '4028e4c11e862225011e8b01f0e4007d','李四' from dual
    union all
    select '4028e4c11e862225011e8b012ac20079','王五' from dual
    ),
    chks as(
    select 1 id,'4028e4c11e862225011e8aff6446006d' empid from dual
    union all
    select 2,'4028e4c11e862225011e8aff6446006d,4028e4c11e862225011e8b01f0e4007d,4028e4c11e862225011e8b012ac20079' from dual
    union all
    select 3,'4028e4c11e862225011e8aff6446006d,4028e4c11e862225011e8b01f0e4007d' from dual
    )
    select c.id,wm_concat(e.name) empName
    from emps e,chks c
    where instr(','||c.empid||',',','||e.id||',')>0
    group
      

  4.   

    4楼高手,用他的就行。select c.id,wm_concat(e.name) empName
    from emps e,chks c
    where instr(','||c.empid||',',','||e.id||',')>0
    group by c.id --他好像没复制全
      

  5.   

    select c.id,wm_concat(e.name) empName
    from emps e,chks c
    where instr(','||c.empid||',',','||e.id||',')>0
    group by c.id --他好像没复制全