-1

私は次のようなテーブルを持っています:

ティッカー、日付、Open_Price、Close_Price

何百ものティッカーが含まれています。ギャップと呼ばれる別の計算列を追加したいと思います。これはOpen_price-昨日の終値です。各行(つまり、各ティッカー、毎日)

誰かがSQLを手伝ってくれませんか?

ありがとうスティーブ

4

1 に答える 1

1

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またはwhere 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
于 2013-02-25T22:46:21.070 に答える