1

私の問題は、四半期ごとのデータがいくつかありますが、別の毎日の値を使用して毎日再計算する必要があることです。基本的に、私は四半期ごとの財務データを扱っていますが、毎日の価格データを使用して、毎日の頻度の比率の一部を再計算する必要があります。以下の例では、c.atq と c.csh12q の値が四半期ごとに、s1.prccd の値が毎日与えられています。現在の s1.prccd を使用して、現在の c.atq の比率を計算する必要があります。四半期の終わりに c.atq が変更された場合、プロセスは新しい値で続行する必要があります。

 select s1.DATADATE, c.ATQ, s1.PRCCD, c.ATQ/(s1.PRCCD*c.CSH12Q) as PATQ
 from sec_dprc s1 
 left outer join co_ifndq c 
 on s1.GVKEY = c.GVKEY
 and s1.DATADATE = c.DATADATE
 where s1.GVKEY = 008068
 order by s1.DATADATE

これは結果の小さな表です:

DATADATE            ATQ     PRCCD   PATQ
19/12/1984 00:00    NULL    28      NULL
20/12/1984 00:00    NULL    27.25   NULL
21/12/1984 00:00    NULL    27.5    NULL
24/12/1984 00:00    NULL    27.5    NULL
26/12/1984 00:00    NULL    27.5    NULL
27/12/1984 00:00    NULL    27.625  NULL
28/12/1984 00:00    NULL    27.75   NULL
31/12/1984 00:00    12273   28      4.400022371
02/01/1985 00:00    NULL    27.5    NULL
03/01/1985 00:00    NULL    26.75   NULL
04/01/1985 00:00    NULL    25      NULL
07/01/1985 00:00    NULL    24      NULL
08/01/1985 00:00    NULL    25      NULL
09/01/1985 00:00    NULL    25.375  NULL

次の四半期に変更されるまで、c.ATQ の値を次のすべての日付で複製する必要があります。

ありがとう!!

パート2:

GVKEY   rankx   rdq                 QTR ATQ         CSH12Q  DATADATE
008068  2   1984-02-03 00:00:00.000 1   11775.402   96.569  1983-12-31 00:00:00.000
008068  3   1984-05-07 00:00:00.000 2   11428.602   96.751  1984-03-31 00:00:00.000
008068  4   1984-08-02 00:00:00.000 3   11642.902   98.104  1984-06-30 00:00:00.000
008068  5   1984-10-18 00:00:00.000 4   11654.5     98.984  1984-09-30 00:00:00.000

同様に:

DATADATE                ATQ     PRCCD   PATQ    datadate    rdq
1984-01-31 00:00:00.000 NULL    28      NULL    NULL    NULL
1984-02-01 00:00:00.000 NULL    28.625  NULL    NULL    NULL
1984-02-02 00:00:00.000 NULL    27.875  NULL    NULL    NULL
1984-02-03 00:00:00.000 11775.2 26.75   4.55841 1983-12-31  1984-02-03 00:00:00.000
1984-02-06 00:00:00.000 NULL    27      NULL    NULL    NULL
1984-02-07 00:00:00.000 NULL    26.875  NULL    NULL    NULL
1984-02-08 00:00:00.000 NULL    25.75   NULL    NULL    NULL
4

1 に答える 1

1

四半期ごとの日付をリンクするためのキーがまだない場合は、次のようなものを使用して ID をエミュレートできます。

 select DATEPART(YYYY,datetimevalue) * 10 + DATEPART(q,datetimevalue)

構文的には function の方が見栄えがよくなりますが、結合の日時部分を次のように変更することで機能するはずです。

  DATEPART(YYYY,s1.DATADATE) * 10 + DATEPART(q,s1.DATADATE) = DATEPART(YYYY,c.DATADATE) * 10 + DATEPART(q,c.DATADATE)

2 つのレコードが得られる場合は、共通のテーブル式 (with) を使用して、最初に四半期ごとのデータを個別に取得できます。

于 2012-06-04T07:22:38.030 に答える