SQL でのリクエストに問題があります。
2 つのテーブルがあります。1 つは日付のベクトルを表し、もう 1 つはさまざまな証券の価格の時系列を表します。
日付:
日付ID | 日にち |
---|---|
1 | 2021-01-01 |
2 | 2021-01-02 |
3 | 2021-01-03 |
時系列:
セキュリティ ID | 日付ID | 価値 |
---|---|---|
1 | 1 | 0.25 |
1 | 3 | 0.32 |
2 | 1 | 0.41 |
2 | 2 | 0.67 |
timeseries にはギャップがある場合があります。たとえば、上記のテーブルでは、SecurityId=1 には DateId=2 に行がなく、SecurityId=2 には DateId=3 に行がありません。
timeseries の直前の値でギャップを埋めるリクエストを作成する必要があります。すべての証券とすべての日付の値は次のようになります。
セキュリティ ID | 日付ID | 価値 |
---|---|---|
1 | 1 | 0.25 |
1 | 2 | 0.25 |
1 | 3 | 0.32 |
2 | 1 | 0.41 |
2 | 2 | 0.67 |
2 | 3 | 0.67 |
すべての日付を右結合で一致させようとしました
SELECT * from [TimeSerie] px RIGHT JOIN Dates dt on dt.DateId = px.Dateid
残念ながら、DateId の等価性が一致するセキュリティが常に存在するため、これは機能しません。そのため、値のない TimeSeries 行を取得できません。
私はSQL Server標準2019に取り組んでおり、単一のクエリに基づくソリューションを目指しています(一時テーブルまたはカーソルを使用した手順を回避します)。