如下表
EMPNO  KQ_DATE      KQ_TIME
90001  2013-06-01   00:08:09
90001  2013-06-01   16:12:13
90002  2013-06-03   01:34:45
90002  2013-06-03   07:34:45
90002  2013-06-03   11:34:45
90002  2013-06-03   16:34:45
90002  2013-06-03   18:34:45
90002  2013-06-03   22:34:45想实现这样的行列转换EMPNO   KQ_DATE     TIME1     TIME2     TIME3     TIME4     TIME5     TIME6  
90001   2013-06-01  00:08:09  16:12:13
90002   2013-06-03  01:34:45  07:34:45  11:34:45  16:34:45  18:34:45  22:34:45不知道有没有人有更好的解决方案。oracle 

解决方案 »

  1.   

    select t.empno,
           t.kq_date,
           max(decode(rn, 1, t.kq_time)) time1,
           max(decode(rn, 2, t.kq_time)) time2,
           max(decode(rn, 3, t.kq_time)) time3,
           max(decode(rn, 4, t.kq_time)) time4,
           max(decode(rn, 5, t.kq_time)) time5,
           max(decode(rn, 6, t.kq_time)) time6
      from (select t.*,
                   row_number() over(partition by t.empno order by t.kq_time) rn
              from t) t
     group by t.empno, t.kq_date;
      

  2.   

    select t.empno,       t.kq_date,       max(decode(rn, 1, t.kq_time)) time1,       max(decode(rn, 2, t.kq_time)) time2,       max(decode(rn, 3, t.kq_time)) time3,       max(decode(rn, 4, t.kq_time)) time4,       max(decode(rn, 5, t.kq_time)) time5,       max(decode(rn, 6, t.kq_time)) time6  from (select t.*,               row_number() over(partition by t.empno,t.kq_date order by t.kq_time) rn          from t) t group by t.empno, t.kq_date;