一个多列转一列多行的有关问题
求助一个多列转一列多行的问题!
现在有一些类似以下的数据:
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
------解决思路----------------------
只有两列合并使用nvl函数即可,如果有很多列需要合并可以考虑使用coalesce函数
现在有一些类似以下的数据:
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函数