我想在 SQLite 中创建一个 View ,其中一行中的字段取决于前一行中字段的值。我可以使用 LAG
分析函数在 Oracle 中执行此操作,但不确定如何在 SQLite 中执行此操作。
例如,如果我的 table 看起来像:
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
我希望我的 View 看起来像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'
最佳答案
Oracle 等效项是正确的。从 SQLite 3.25.0 开始你可以在本地使用 LAG
:
WITH mytable(ITEM,DAY,PRICE) AS (
VALUES
('apple', CAST('20110107' AS DATE), 1.25),
('orange', CAST('20110102' AS DATE), 1.00),
('apple', CAST('20110101' AS DATE), 1.00),
('orange', CAST('20110103' AS DATE), 2.00),
('apple', CAST('20110108' AS DATE), 2.00),
('apple', CAST('20110110' AS DATE), 1.50)
)
SELECT day, price, price-LAG(price) OVER (ORDER BY day) AS change
FROM mytable
WHERE item = 'apple'
ORDER BY DAY;
关于sql - 创建一个 SQLite View ,其中一行取决于前一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10003313/