SQLiteで1つの行のフィールドが前の行のフィールドの値に依存するビューを作成したいとします。私はLAG
解析関数を使ってOracleでこれを行うことができましたが、SQLiteでどうやってそれを行うかはわかりません。私はWHERE item = 'apple'
と、見えるように私の見解を希望行が前の行に依存するSQLiteビューを作成する
ITEM DAY PRICE
apple 2011-01-07 1.25
orange 2011-01-02 1.00
apple 2011-01-01 1.00
orange 2011-01-03 2.00
apple 2011-01-08 1.00
apple 2011-01-10 1.50
:
は例えば、私のテーブルには、ように見えた場合
DAY PRICE CHANGE
2011-01-01 1.00 (null)
2011-01-07 1.25 0.25
2011-01-08 2.00 0.75
2011-01-10 1.50 -0.50
編集:
の同等私が探しているのは、Oracleのようなものです(これは試していませんが、これは正しいと思いますが)。
SELECT day, price,
price - LAG(price, 1) OVER (ORDER BY day) AS change
FROM mytable
WHERE item = 'apple'
"前へ"を定義します。現在のレコードの1日前の日付の単一の許可されたレコードのように見えます。それはいつも真実ですか? –
いいえ、私はこの例を拡張しました。 「前の」とは、基本的には、問題が発生した行の前に行があることを意味します。 – eaolson
「順序付け」を定義します。基本的に、問題は、SQLデータベース(定義による)は、特に列名、検索時に指定するもの以外の行の順序付けの概念を持たないことです。一般的には望みの結果を得ることができますが、ビュー定義の関係代数を使って「前の行」を導き出す必要があります。そのためには、「前の」定義方法を明示する必要があります言語。 –