2016-07-25 19 views
0

Iは、以下のテーブル形式を持ち、他の二つの列に基づいて最後の列を計算したかった:計算カラムは、

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 )。第2の行ARRV_TIMEからの値は、前値+現在行TRAV_TIMEとして計算される。

例:ARRV_TIMEの1行は(5:25:00 +?)= 5:25:00です。 2行から休憩までの時間は、前の結果として計算されます。これは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'のデータ型は10進数ですか?それらは私の時代のように見えます... – Andrew

答えて

3

あなたが累積和、分析関数のための基本的なタスクの1説明:列DEP_TIMEにこれを追加

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

はに基づいて、その後の間隔の計算を適用している

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

このTimeデータ型が必要な場合は、Intervalになります。

TIME '00:00:00' + (result * INTERVAL '00:00:01' HOUR TO SECOND) 
関連する問題