我需要创建一个查询来获取资产的当日价格及其基准。问题在于,资产比较的基准可能会随着时间而变化。幸运的是,有一个表存储基准更改的日期以及更改的基准,如下例所示:
+-------+-----------+------------+
| Asset | Benchmark | Date |
| A1 | B1 | 2015-01-01 |
| A1 | B2 | 2015-05-07 |
| A1 | B3 | 2015-09-03 |
| A1 | B4 | 2075-12-31 |
| A1 | B1 | 2075-12-31 |
| A2 | B4 | 2014-05-07 |
| A2 | B2 | 2075-12-31 |
+-------+-----------+------------+
日期字段显示基准测试正确的日期。
另外,我有一张表格,其中列出了每个基准的每个日期的价格,如下表所示:
+------------+-----------+-------+
| Date | Benchmark | Price |
| 2014-05-07 | B1 | 1000 |
| 2014-05-07 | B2 | 1200 |
| 2014-05-07 | B3 | 1050 |
| 2014-05-07 | B4 | 900 |
| ... | ... | ... |
| 2015-01-01 | B1 | 1500 |
| 2015-01-01 | B2 | 1550 |
| 2015-01-01 | B3 | 1450 |
| 2015-01-01 | B4 | 1600 |
| ... | ... | ... |
+------------+-----------+-------+
我希望做的是按日期部分相应地加入基准,以创建“单一”基准。然后我会将此加入另一个包含每日资产价格的表格。例如,我需要通过从A1登记到2015-01-01的第一天获得基准B1的价格,然后从2015-01-02到2015-05的B2的价格,为资产A1创建基准。 07,然后价格从2015-05-08 B3到2015-09-03,最后从2015-09-04开始B4的价格。
另一个问题是数据集必须是连续的。我的意思是,当基准改变时,价格应该调整,使得先前基准的最后一天等于新基准中的同一天,然后保持相同的比例增长(通过我的意思是这次调整后Price(n)/ Price(n + 1)应该保持不变。)
预期输出仅为下表的日期和价格列。基准专栏仅用于澄清目的:
+------------+-------+-----------+
| Date | Price | Benchmark |
+------------+-------+-----------+
| 2014-05-07 | 1000 | B1 |
| 2014-05-08 | 1010 | B1 |
| ... | ... | ... |
| 2015-01-01 | 1500 | B1 |
| 2015-01-02 | 1505 | B2 |
| 2015-01-03 | 1510 | B2 |
| ... | ... | ... |
| 2015-05-06 | 1700 | B2 |
| 2015-05-07 | 1704 | B2 |
| 2015-05-08 | 1708 | B3 |
| 2015-05-09 | 1710 | B3 |
| ... | ... | ... |
| 2015-09-02 | 2000 | B3 |
| 2015-09-03 | 1998 | B3 |
| 2015-09-04 | 2002 | B4 |
| ... | ... | ... |
+------------+-------+-----------+
这一切都可以在SQL查询中完成吗?或者我应该通过代码转向这样做?