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