【问题标题】:SQL - Join on value OR default valueSQL - 加入值或默认值
【发布时间】:2021-12-21 10:05:57
【问题描述】:

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

企业:

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,但我不太确定如何在这里应用它。

【问题讨论】:

标签: sql postgresql join


【解决方案1】:

我同意您解决此问题的方向。两次加入第二张表并合并以获得您需要的内容:

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

【讨论】:

    猜你喜欢
    • 2018-03-21
    • 2015-11-11
    • 2023-03-25
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 2011-02-04
    • 2020-12-11
    • 2016-04-24
    相关资源
    最近更新 更多