我有一张像这样的桌子:
代码、日期、Open_Price、Close_Price
其中包含 100 个代码。我想添加另一个名为 Gap 的计算列,即 Open_price - 昨天的收盘价。对于每一行(即每个股票,每天)
任何人都可以帮我处理 SQL 吗?
谢谢史蒂夫
我有一张像这样的桌子:
代码、日期、Open_Price、Close_Price
其中包含 100 个代码。我想添加另一个名为 Gap 的计算列,即 Open_price - 昨天的收盘价。对于每一行(即每个股票,每天)
任何人都可以帮我处理 SQL 吗?
谢谢史蒂夫
这是一种适用于许多 SQL 方言的方法:
select t.*, open_price - lastclose as gap
from (select t.ticker, t.date, t.open_price, t.close_price,
(select t.close_price from t t2 where t2.ticker = t.ticker and t2.date < t.date order by DATE desc limit 1
) as lastclose
from t
) t
根据 SQL 的风格,limit 1
也可以是select top 1
orwhere rownum = 1
或 。. . 甚至一些其他的可能性。
这使用相关子查询来模拟该lag()
功能,这是您真正需要的。如果你有这个,你可以写:
select t.*, open_price - lastclose as gap
from (select t.ticker, t.date, t.open_price, t.close_price,
lag(close_price) over (partition by ticker order by date) as lastclose
from t
) t