当前位置: 代码迷 >> Oracle开发 >> 一个多列转一列多行的有关问题
  详细解决方案

一个多列转一列多行的有关问题

热度:39   发布时间:2016-04-24 06:30:16.0
求助一个多列转一列多行的问题!
现在有一些类似以下的数据:
       PERSONNUM      EVENTDATE   INPUNCH                       OUTPUNCH
E4103                 2015/1/16    2015/1/16 19:52:00
E4103              2015/1/16                                     2015/1/17 8:00:00
E4103                 2015/1/16         2015/1/15 23:37:00
E4103                 2015/1/16                                      2015/1/16 8:01:00
我想把它们变成一下数据:
  PERSONNUM      EVENTDATE       TIME
E4103                 2015/1/16    2015/1/16 19:52:00
E4103              2015/1/16    2015/1/17 8:00:00
E4103                 2015/1/16         2015/1/15 23:37:00
E4103                 2015/1/16     2015/1/16 8:01:00


如果有少于四行,或者多余四行的情况也按这样处理,该如何实现呢,拜托各位~


------解决思路----------------------
有个很简单的方法,使用union
SELECT PERSONNUM, EVENTDATE, INPUNCH TIME
  FROM TABLE_NAME
 WHERE INPUNCH IS NOT NULL
UNION ALL
SELECT PERSONNUM, EVENTDATE, OUTPUNCH TIME
  FROM TABLE_NAME
 WHERE OUTPUNCH IS NOT NULL;

------解决思路----------------------
只有两列合并使用nvl函数即可,如果有很多列需要合并可以考虑使用coalesce函数
  相关解决方案