2017-06-07 1 views
-1

株価、すなわち株価、日付、オープンプライス、終値を格納するテーブルがあります。特定の日付範囲内のテーブルを選択したいと思っています。また、昨日の終値から今日のオープンまでの価格リターンもあります。タイムラグ付きで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機能で

+6

あなたの質問を編集し、サンプルデータと希望する結果を提供してください。 –

+0

ゴードンそれは簡単な '2017-05-01'、' ABC'、 '100 $ 'と' 2017-05-02'、 'ABC'、' 105 $ ' だから彼は選択中に別の列を望んでいて、 2017-05-02'、 'ABC'、' 105 $ '、 '105/100' –

+0

はい、これはまさに私が意味していたものです。誰もそれを1つのステップで行う方法を知っていますか?ありがとう。 – Aaron

答えて

0

は、他の行から値を取得するために使用することができますリターン。

+0

ありがとうキット、これは非常に便利です! – Aaron

+0

それはいいですアーロン、それはあなたの質問に答えますか? – Kit

関連する問題