株価、すなわち株価、日付、オープンプライス、終値を格納するテーブルがあります。特定の日付範囲内のテーブルを選択したいと思っています。また、昨日の終値から今日のオープンまでの価格リターンもあります。タイムラグ付きで1つの列を別の列に分割する
基本的には、i番目の行の値がOpen(i)/ Close(i-1)と等しい列を追加する必要があります。
Open(i)/ Close(i)は計算が簡単かどうかは分かりますが、別の行の値で分ける方法は?新しい列の長さは他の列の長さよりも1単位少なくなります。長さに合わせるために「NA」を入れることは可能ですか?計算することができない場合
Select
[stock_id],
[date],
[open]/LAG([close],1) OVER (PARTITION BY [stock_id] ORDER BY [date] asc) as [return]
from tbl_1
ORDER BY [stock_id],[date]
これも自動的に、シリーズの最初の日付をNULLになります。これは次のようにSQL Serverの、lag機能で
あなたの質問を編集し、サンプルデータと希望する結果を提供してください。 –
ゴードンそれは簡単な '2017-05-01'、' ABC'、 '100 $ 'と' 2017-05-02'、 'ABC'、' 105 $ ' だから彼は選択中に別の列を望んでいて、 2017-05-02'、 'ABC'、' 105 $ '、 '105/100' –
はい、これはまさに私が意味していたものです。誰もそれを1つのステップで行う方法を知っていますか?ありがとう。 – Aaron