我运行 PostgreSQL,我有多个 (10+) 具有相同列名和格式的表,我想对它们的两个列求和。如果其中一个表中缺少一行,我需要将其视为 0 (zero)。
两表示例:
表A:
primkey | year | month | day | data_value
--------+------+-------+-----+-----------
20120101| 2012 | 01 | 01 | 3.7
20120102| 2012 | 01 | 02 | 1.0
表B:
primkey | year | month | day | data_value
--------+------+-------+-----+-----------
20120101| 2012 | 01 | 01 | 1.3
20120103| 2012 | 01 | 03 | 5.5
想要的输出:
primkey | year | month | day | data_value
--------+------+-------+-----+-----------
20120101| 2012 | 01 | 01 | 5.0
20120102| 2012 | 01 | 02 | 1.0
20120103| 2012 | 01 | 03 | 5.5
我正在考虑这样做:
SELECT a.primkey, a.year, a.month, a.day, a.data_value+b.data_valueas data_value FROM "TableA" as a FULL JOIN "TableB" as b ON a.primkey = b.primkey;
但它会产生这个(缺少一些 data_values):
primkey | year | month | day | data_value
--------+------+-------+-----+-----------
20120101| 2012 | 01 | 01 | 5.0
20120102| 2012 | 01 | 02 |
20120103| 2012 | 01 | 03 |
注意:primkey 是唯一的,并且是 PRIMARY KEY,这需要对加入 10 多个表有效