You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL技术问询:如何用CASE语句获取每个Id最大年份对应Country_Code

用CASE语句实现SQL中最大年份对应国家代码的匹配

完整解决方案代码

SELECT DISTINCT
    id,
    CASE
        -- 判断当前行的End_Year是否等于该Id的最大年份
        WHEN end_year = MAX(CASE WHEN end_year >= complete_year THEN end_year ELSE complete_year END) OVER (PARTITION BY id) THEN country_code
        -- 否则判断Complete_Year是否等于最大年份
        WHEN complete_year = MAX(CASE WHEN end_year >= complete_year THEN end_year ELSE complete_year END) OVER (PARTITION BY id) THEN country_code
    END AS final_country_code,
    MAX(CASE WHEN end_year >= complete_year THEN end_year ELSE complete_year END) OVER (PARTITION BY id) AS final_year
FROM
    sample_table;

逻辑说明

  1. 计算全局最大年份:和你已实现的逻辑一致,通过窗口函数OVER (PARTITION BY id),对每个Id从End_Year和Complete_Year中提取最大值,得到final_year。
  2. 匹配对应国家代码:用CASE语句逐一校验当前行的End_Year或Complete_Year是否等于该Id的final_year,匹配成功则取当前行的Country_Code。
  3. 去重得到唯一结果:由于每个Id对应多行数据,用DISTINCT过滤重复行,最终得到每个Id唯一的结果行。

验证结果

针对你提供的表结构,运行上述代码后会生成期望输出:

IdFinal_Country_CodeFinal_Year
101USA2023
102CAN2026

内容的提问来源于stack exchange,提问作者Jay Lorenz Dungog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 17:14:55