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

SQL查询:如何关联MAX状态ID与对应的lookup状态编码?

获取项目最大状态ID对应状态码的正确SQL写法

方法一:子查询聚合后关联状态表

先通过子查询拿到指定项目的最大状态ID,再关联状态表获取对应的状态编码:

SELECT 
    max_proj.PROJ,
    max_proj.max_status_id,
    l.PROJ_STATUS_CD
FROM (
    SELECT 
        p.PROJ,
        MAX(p.lookup_PROJ_STATUS_ID) AS max_status_id
    FROM PROJECT p
    WHERE p.PROJ = '1703243'
    GROUP BY p.PROJ
) max_proj
LEFT JOIN LOOKUP_PROJ_STATUS l 
    ON max_proj.max_status_id = l.lookup_JCN_STATUS_ID;

方法二:使用窗口函数(适配多项目场景)

通过ROW_NUMBER()窗口函数按状态ID降序排序,直接取每个项目的第一条记录(即最大状态ID对应的记录):

SELECT 
    PROJ,
    lookup_PROJ_STATUS_ID AS max_status_id,
    PROJ_STATUS_CD
FROM (
    SELECT 
        p.PROJ,
        p.lookup_PROJ_STATUS_ID,
        l.PROJ_STATUS_CD,
        ROW_NUMBER() OVER (PARTITION BY p.PROJ ORDER BY p.lookup_PROJ_STATUS_ID DESC) AS rn
    FROM PROJECT p
    LEFT JOIN LOOKUP_PROJ_STATUS l 
        ON p.lookup_PROJ_STATUS_ID = l.lookup_JCN_STATUS_ID
    WHERE p.PROJ = '1703243'
) t
WHERE rn = 1;

原查询错误说明

你之前的子查询写法存在两处问题:

  1. GROUP BY中的子查询缺少SELECT关键字,且关联字段不匹配(应沿用第一次查询的l.lookup_JCN_STATUS_ID作为关联条件)
  2. 逻辑逻辑偏差:不需要在GROUP BY中嵌套子查询,正确逻辑是先聚合得到最大状态ID,再关联状态表获取对应编码。

内容的提问来源于stack exchange,提问作者Karen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 02:37:32