构建SQL查询以基于辅助表自动添加计算列

构建SQL查询以基于辅助表自动添加计算列,sql,postgresql,Sql,Postgresql,我需要构建一个SQL查询,将计算列以友好方式添加到初始“数据”表中。 在这个表中,我有一个日期开始/结束值,对于这些日期所属的每年,我需要用另一个表“money”中的值乘以x,y系数(使用特定公式) (如果date end为NULL,则表示仍然有效,需要计算所有年份/货币值,并在“货币”表中添加尽可能多的新列和记录) 根据每个“数据”表记录的“区域”和“使用”值。 我需要创建如下所示的“results”表,如果为每一个新年(es:year2020、2021等)添加具有新值的新行,则可能能够保持相

我需要构建一个SQL查询,将计算列以友好方式添加到初始“数据”表中。 在这个表中,我有一个日期开始/结束值,对于这些日期所属的每年,我需要用另一个表“money”中的值乘以x,y系数(使用特定公式) (如果date end为NULL,则表示仍然有效,需要计算所有年份/货币值,并在“货币”表中添加尽可能多的新列和记录) 根据每个“数据”表记录的“区域”和“使用”值。 我需要创建如下所示的“results”表,如果为每一个新年(es:year2020、2021等)添加具有新值的新行,则可能能够保持相同的语法并获得结果。 (在实际情况中,我有更多的区域和使用值) 有人能帮我吗? 提前谢谢

表“钱”

表“数据”

期望输出表“结果”

+------+----------+----------+
| year | usd_d2_r | usd_d2_c |
|      |          |          |
+======+==========+==========+
| 2017 | 1000     | 1500     |
+------+----------+----------+
| 2018 | 2500     | 2000     |
+------+----------+----------+
| 2019 | 3000     | 3000     |
+------+----------+----------+
+----+------------+------------+------+-----+------+-----+
| id | date_start | date_end   | zone | use | x    | y   |
+====+============+============+======+=====+======+=====+
| 1  | 2003-02-31 | NULL       | d2   | r   | 0.12 | 0.2 |
+----+------------+------------+------+-----+------+-----+
| 2  | 2016-01-12 | 2017-12-11 | d2   | c   | 0.7  | 0.1 |
+----+------------+------------+------+-----+------+-----+
| 3  | 2018-02-01 | NULL       | d2   | c   | 1    | 1   |
+----+------------+------------+------+-----+------+-----+
+----+------------+------------+------+-----+------+-----+----------------+----------------+----------------+
| id | date_start | date_end   | zone | use | x    | y   | val_2017       | val_2018       | val_2019       |
+====+============+============+======+=====+======+=====+================+================+================+
| 1  | 2003-02-31 | NULL       | d2   | r   | 0.12 | 0.2 | 1000*(formula) | 2500*(formula) | 3000*(formula) |
+----+------------+------------+------+-----+------+-----+----------------+----------------+----------------+
| 2  | 2016-01-12 | 2017-12-11 | d2   | c   | 0.7  | 0.1 | 1500*(formula) | NULL           | NULL           |
+----+------------+------------+------+-----+------+-----+----------------+----------------+----------------+
| 3  | 2018-02-01 | NULL       | d2   | c   | 1    | 1   | NULL           | 2000*(formula) | 3000*(formula) |
+----+------------+------------+------+-----+------+-----+----------------+----------------+----------------+