表记录是这样的
pj           empid
1个A         2
6个B         2
3个C         2
4个D         2
2个A         3
3个B         3
3个D         3
如何做到如下查询结果:
empid        pj
2            1个A 6个B 3个C 4个D
3            2个A 3个B 0个C 3个Dempid为员工号 pj为成绩

解决方案 »

  1.   


    select empid,pj from table GROUP BY empid,pj先执行看看效果吧~~~!!!
      

  2.   

    select emp_id ,max(case scroe when 'A' then pj end) ||
                  max(case scroe when 'B' then pj end ) ||
                  max(case scroe when 'C' then pj end ) ||
                  max(case scroe when 'D' then pj end ) pj
    from 表名 a group by a.emp_id
    这个可以
      

  3.   

    慢了select empid,
           NVL(MAX(decode(substr(pj, -1, 1), 'A', pj, '')),'0个A') ||
           NVL(MAX(decode(substr(pj, -1, 1), 'B', pj, '')),'0个B') ||
           NVL(MAX(decode(substr(pj, -1, 1), 'C', pj, '')),'0个C') ||
           NVL(MAX(decode(substr(pj, -1, 1), 'D', pj, '')),'0个D') pj
      FROM (SELECT '1个A' pj, '2' empid
              from dual
            union
            SELECT '1个B' pj, '2' empid
              from dual
            union
            SELECT '1个C' pj, '2' empid
              from dual
            union
            SELECT '1个D' pj, '2' empid
              from dual
            union
            SELECT '1个A' pj, '2' empid
              from dual
            union
            SELECT '1个B' pj, '3' empid
              from dual
            union
            SELECT '1个C' pj, '3' empid
              from dual
            union
            SELECT '1个D' pj, '3' empid from dual)
     GROUP BY empid