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

如何按ID分组仅返回一行数据,优先保留Approved状态记录?

按ID分组筛选记录的实现方案

原始数据

IDNAMEDATESTATUS
1Joe01-22Approved
1Joe01-22Pending
2Bill02-22Approved
2Bill02-22Sent back
3John01-22Approved
4Bob02-22Pending

筛选规则

  • 同一ID同时存在Approved和Pending状态时,仅保留Approved记录
  • 若ID仅有一条记录,直接保留该记录
  • 优先保留Approved状态的记录

最终筛选结果

IDNAMEDATESTATUS
1Joe01-22Approved
2Bill02-22Approved
3John01-22Approved
4Bob02-22Pending

实现代码(SQL)

用窗口函数给每条记录按状态优先级排序,再取每个ID的第一条记录即可:

WITH ranked_records AS (
    SELECT 
        ID,
        NAME,
        DATE,
        STATUS,
        ROW_NUMBER() OVER (
            PARTITION BY ID 
            ORDER BY CASE STATUS WHEN 'Approved' THEN 1 ELSE 2 END
        ) AS rn
    FROM your_table_name
)
SELECT ID, NAME, DATE, STATUS
FROM ranked_records
WHERE rn = 1;

代码逻辑说明

  • PARTITION BY ID:按ID分组处理
  • ORDER BY CASE STATUS WHEN 'Approved' THEN 1 ELSE 2 END:给Approved状态赋予最高优先级(排序值1),其他状态为2
  • 每个ID只取排序为1的记录,完美匹配需求中的优先级规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 08:36:18