2016-07-25 24 views
0

我有下面的表格格式,並希望基於其他兩列來計算最後一欄計算列從prevoius行等欄目

BASE_VERSION JOURNEY_NO LINE_NO DIRECTION OP_DEP_NO SEQ_NO BLOCK_NO DEP_TIME TRAV_TIME ARRV_TIME 
20,160,603 33,263 176 1 2 1 21,760,010 5:25:00 ? 5:25:00 
20,160,603 33,263 176 1 2 2 21,760,010 5:25:00 0:00:45 5:25:45 
20,160,603 33,263 176 1 2 3 21,760,010 5:25:00 0:00:43 5:26:28 
20,160,603 33,263 176 1 2 4 21,760,010 5:25:00 0:00:47 5:27:15 
20,160,603 33,263 176 1 2 5 21,760,010 5:25:00 0:00:59 5:28:14 
20,160,603 33,263 176 1 2 6 21,760,010 5:25:00 0:01:31 5:29:45 
20,160,603 33,263 176 1 2 7 21,760,010 5:25:00 0:01:08 5:30:53 
20,160,603 33,263 176 1 2 8 21,760,010 5:25:00 0:01:37 5:32:30 
20,160,603 33,263 176 1 2 9 21,760,010 5:25:00 0:00:48 5:33:18 
20,160,603 33,263 176 1 2 10 21,760,010 5:25:00 0:01:02 5:34:20 
20,160,603 33,263 176 1 2 11 21,760,010 5:25:00 0:00:38 5:34:58 
20,160,603 33,263 176 1 2 12 21,760,010 5:25:00 0:01:18 5:36:16 
20,160,603 33,263 176 1 2 13 21,760,010 5:25:00 0:00:58 5:37:14 
20,160,603 33,263 176 1 2 14 21,760,010 5:25:00 0:00:47 5:38:01 

爲第一行最後一列ARRV_TIME是(DEP_TIME + TRAV_TIME )。從第二行開始,ARRV_TIME計算爲prev值+當前行TRAV_TIME。

例如:1行ARRV_TIME是(5:25:00 +?)= 5:25:00。從第2行開始計算爲prev結果,這是5:25:00 + 0:00:45 = 5:25:45然後下一行是5:25:45 + 0:00:43 = 5:26:28等等每個LINE_NO和DIRECTION。

+0

這些數據類型是什麼列?訂單如何確定? – dnoeth

+0

@dnoeth數據類型是十進制的。訂單可以通過seq確定。錯過了seq。在問題列。現在用seq更新了數據集。列 – RUser

+0

所以你正在尋找一個運行總和,基本上?如果你願意,什麼專欄組成了關鍵的部分?另外,'DEP_TIME'和'TRAV_TIME'的數據類型是十進制的?那些看起來像我的時間... – Andrew

回答

3

你描述一個累計總和,爲的解析函數的基本任務之一:

SUM(column TRAV_TIME is based on) 
OVER (PARTITION BY LINE_NO, DIRECTION 
     ORDER BY SEQ_NO 
     ROWS UNBOUNDED PRECEDING) 

添加這列DEP_TIME基於然後應用間隔計算

result * INTERVAL '00:00:01' HOUR TO SECOND 

這如果需要時間數據類型,則會生成一個間隔:

TIME '00:00:00' + (result * INTERVAL '00:00:01' HOUR TO SECOND)