日期:2014-05-17  浏览次数:20629 次

关于ORACLE的行列转换的问题
如下表
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?

------解决方案--------------------
哎。每天都能 看到  问 行列转换的帖子  
------解决方案--------------------
为什么就不能试着 先去 百度 或 谷歌呢、、、、例子应该很多啊
------解决方案--------------------
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;