SQL - 计算列

SQL - Calculated Column

我有一个 table,它向我显示股票行情,asofdate,开盘,收盘。 我创建了一个名为每日 PL 的计算列,它只是每日收盘价。

,(close-open) AS daily_pl

我无法弄清楚使用第一个 asofdate 中的 {open} 和最近的 asofdate 中的 {close} 的逻辑。 table 会自然增长,所以逻辑需要是动态的。见下文:

您可以使用 window 功能。我认为 first_value() 做你想做的事——获得股票代码的第一个 open 价格:

select j.*,
       (close - first_value(open) over (partition by ticker order by asofdate) as daily_pl
from jandata j;

如果您只想在结果集中为每个行情显示一行,那么您可以使用:

select distinct ticker,
       (first_value(close) over (partition by ticker order by asofdate desc) -
        first_value(open) over (partition by ticker order by asofdate)
       ) 
from jandata;