0

次のようなクエリがあります。

;WITH A AS (SELECT * FROM T1 where T1.targetDate=@inputdate), 
      B AS (SELECT A.*, T2.SId, T2.Type, T2.Value
            FROM A 
            INNER JOIN T2 ON A.SId = T2.SId )
SELECT A.*, B.Type, B.Value 
FROM B

私の質問は、前日との間のデルタを取得する方法を取得するValue代わりに?@inputdate,Value@inputdate(DATEADD(day, -1, @inputdate ))

編集

明確でなくて申し訳ありません。「値」は int 型です。たとえば、@inputdate = '20130708'Value20130708」の が 30 で、前日「20130707」の「値」が 20 の場合、(30 - 20) を返す必要があります。これは 10 です。

4

2 に答える 2

0

このようなもので、Value が DATE 形式であると仮定します

;WITH A AS (SELECT * FROM T1 where T1.targetDate=@inputdate), 
      B AS (SELECT A.*, T2.SId, T2.Type, T2.Value
            FROM A 
            INNER JOIN T2 on A.SId = T2.SId )
SELECT A.*, T2.Type, T2.Value, DATEDIFF(DAY, b.Value, DATEDADD(DAY, -1,@InputDate)) AS Delta
FROM B
于 2013-07-09T10:07:38.500 に答える
0

銘柄、日付、終値などを含む株価表があるとします。次のようなものを使用できます。

select symb, ret_dt, close, (close-(lead(close,1) over (partition by symb order by ret_dt desc,close)))as difference, (lead(close,1) over 
(partition by symb order by ret_dt desc,close)) as lead
from stocks.nyse2010;

注:これret_dtは日付、close は終値です。代表的な目的でリード列を追加しました。

于 2019-03-25T14:37:32.350 に答える