postgreSQL-根据值或默认值进行联接



我有两个表的数据类似于以下内容:

业务:

id company_name industry
1  test         123

industry_benchmark_ratio:

id code year value
1  00   2021 1.1
2  00   2020 1.2
3  111  2021 1.11 
4  222  2021 1.12 
5  222  2021 1.12 

我想选择一家企业并加入行业代码上的比率表,但如果没有匹配的代码,我想加入默认的"00"+年份值,所以我正在寻找类似的东西:

SELECT * 
FROM business b
JOIN industry_benchmark_ratio ibr ON (
(b.industry = ibr.industry and year = 2021) OR
(ibr.industry = 00 and year = 2021)
)

我想到了COALESCE,但我不太确定如何在这里应用它。

我同意你解决这个问题的方向。加入第二个表两次,合并得到您需要的:

SELECT b.*, COALESCE(ibr1.value, ibr2.value)
FROM business b
INNER JOIN industry_benchmark_ratio ibr1 ON 
b.industry = ibr2.industry and ibr1.year = 2021 
INNER JOIN industry_benchmark_ratio ibr2 ON
ibr2.industry = 00 and ibr2.year = 2021

最新更新