我想在SQLite中創建一個視圖,其中一行中的字段取決於前一行中的一個字段的值。我可以在Oracle中使用LAG
分析函數完成此操作,但不確定如何在SQLite中進行操作。創建一個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
我想我的觀點的樣子,與WHERE item = 'apple'
:
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'
定義「上一個」。看起來像是當前記錄前一天的單個允許記錄。這總是如此嗎? – 2012-04-04 01:15:42
不,我已經擴展了這個例子。通過「之前」,我基本上是指在所討論的行之前的行列,一旦它們被訂購。 – eaolson 2012-04-04 01:41:55
定義「有序」。基本上,問題在於SQL數據庫(根據定義)沒有行定序的概念,除了專門指定的內容(按列名稱)檢索時。通常你可以得到你想要的結果,但是你必須通過你的視圖定義中的關係代數來導出「前一行」,爲此,你需要非常清楚你如何在plain中定義「previous」語言。 – 2012-04-04 10:51:03