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

如何基于另一列结果查询每行值?SQL客户提案优先级查询问题

解决方案

你需要调整ROW_NUMBER()的排序逻辑,先按提案状态的优先级排序,再按日期倒序,这样就能优先获取最新的已批准提案,无批准提案时取最新驳回的。

完整SQL示例:

WITH ranked_proposals AS (
    SELECT 
        id,
        result,
        date,
        ROW_NUMBER() OVER (
            PARTITION BY id 
            ORDER BY 
                CASE WHEN result = 'Approved' THEN 0 ELSE 1 END,
                date DESC
        ) AS rn
    FROM 
        proposals
    WHERE 
        date BETWEEN '2024-01-01' AND '2024-01-31' -- 替换为你的指定时间区间
)
SELECT 
    id,
    result,
    date
FROM 
    ranked_proposals
WHERE 
    rn = 1;

逻辑说明

  • 用CASE表达式给Approved状态赋予更高优先级(0比1靠前),确保已批准提案排在同客户所有提案的前面;
  • 同一状态下按date降序排列,保证最新的提案排在首位;
  • 最后筛选每个客户分组中排名第一(rn=1)的记录,就是你需要的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:10:28