如何转化时间戳列到的间隔启动和停止

如何转化时间戳列到的间隔启动和停止

问题描述:

我有如下表如何转化时间戳列到的间隔启动和停止

 
id   ts 
----------- ----------- 
30   0 
30   1205280000 
30   2147483647 
31   0 
31   2147483647 
...   ... 

,我试图把它改造成一个2型渐变维度表中的OLAP应用程序中使用。

 
id   start  stop 
----------- ----------- ----------- 
30   0   1205280000 
30   1205280000 2147483647 
31   0   2147483647 
...   ...   ... 

时间戳0和2147483647个可被视为常数,因为它们代表开始和结束的时间(在UNIX纪元)

如何能不能做到?

WITH q AS 
     (
     SELECT id, ts, ROW_NUMBER() OVER (PARTITION BY id ORDER BY ts) AS rn 
     FROM mytable 
     ) 
SELECT q1.id, q1.ts AS start, q2.ts AS stop 
FROM q q1 
JOIN q q2 
ON  q2.id = q1.id 
     AND q2.rn = q1.rn + 1 
+0

正是我在找什么。非常感谢! – 2010-12-22 15:55:54