我需要加入两个表。第一个包含年份,第二个包含一些与年份相关的数据。如果name
第二个表中的字段具有第一个表中的所有可能year
值之一 - 此行应按原样添加。如果不是 -应该在所有其他字段中生成带有空值的name
“新”行。year
IDK如何更具体。
tl;博士。例子:
SELECT years.year,
name,
salary
FROM
(SELECT generate_series(2017, 2021) AS YEAR) AS years
LEFT JOIN
(SELECT 'Mary' AS name,
1000 AS salary,
2017 AS YEAR
UNION ALL SELECT 'Mary' AS name,
1100 AS salary,
2018 AS YEAR
UNION ALL SELECT 'John' AS name,
2000 AS salary,
2017 AS YEAR
UNION ALL SELECT 'Kate' AS name,
5000 AS salary,
2019 AS YEAR) AS dummy_table ON years.year = dummy_table.year;
结果是
year | name | salary
------+------+--------
2017 | John | 2000
2017 | Mary | 1000
2018 | Mary | 1100
2019 | Kate | 5000
2020 | |
2021 | |
我需要的:
year | name | salary
------+------+--------
2017 | John | 2000
2017 | Mary | 1000
2017 | Kate | 0
2018 | Mary | 1100
2018 | John | 0
2018 | Kate | 0
2019 | Mary | 0
2019 | John | 0
2019 | Kate | 5000
...(same zeroes for 2020 and 2021)