select
Date1,
Date2,
lead(Date1) over (order by Date1) next_date1,
((lead(Date1) over (order by Date1)) - Date2)/7 as Diff
From DATA_TABLE
一切のn + 1日付1が存在しないので、あなたは、任意のVWを取得することはありません。
lead(column)
関数は、over
節に指定されている次の行からcolumn
パラメータの値を返します。
例とその他の同様の機能があります。here
UPDATE(質問コメントへの応答 - どのように他の列と比較する)
select
Date1,
Date2,
Diff,
another_column,
CASE
when Diff < another_column then 'it is lower'
when Diff > another_column then 'it is higher'
when Diff = another_column then 'are equal'
END as comparation,
CASE
when round(diff -another_column,3) = 0 then 'almost equal'
else 'definitely not equal'
END as rounded_comparation
from(
select
Date1,
Date2,
lead(Date1) over (order by Date1) next_date1,
((lead(Date1) over (order by Date1)) - Date2)/7 as Diff,
another_column
From DATA_TABLE
)
あなたはどのようなDBMSを使用していますか?あなたのテーブルには、ある種のプライマリキーがありますか? Date1とDate2のデータ型は何ですか?どのような行が最初の行であるかをどのように知っていますか?それはDate1の最も低い値を持つ行ですか? –
Oracle 11gを使用します。データ型はDateです。 これは主キーを持つことができ、date1にもより少ない日付を持つことができます。訪問のウィンドウの値を取得するためのサンプルクエリが必要です。まだ実装されていない単なるパズルです。 – shubcbe
'lead'関数を見てください。次の行のデータにアクセスするために使用され、その値を使用して現在の行と次の行の差を計算できます。 –