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

如何编写SQL查询按指定规则检索不同客户的状态?

原SQL问题分析

你原有写法的核心问题是仅对「客户+状态」的组合做去重,会返回同一客户的所有不同状态,无法实现“优先返回非completed状态,客户所有状态均为completed才返回completed”的聚合规则。

调整后方案

按客户维度分组,通过聚合判断优先取非completed状态即可,SQL语句如下:

SELECT 
  CustomName AS 客户姓名,
  COALESCE(
    -- 优先级1:取created状态
    MAX(CASE WHEN STATUS = 'created' THEN STATUS END),
    -- 优先级2:取inprocess状态
    MAX(CASE WHEN STATUS = 'inprocess' THEN STATUS END),
    -- 无上述状态则返回completed
    'completed'
  ) AS 状态
FROM [dbo].[Customers]
GROUP BY CustomName

逻辑说明

  1. 用GROUP BY CustomName把数据按客户聚合,每个客户仅返回一行结果
  2. 用CASE语句匹配高优先级的非completed状态,MAX聚合会自动跳过CASE匹配不到返回的NULL值
  3. 用COALESCE函数按优先级取第一个非空的状态值,所有非completed状态都不存在时默认返回completed

运行上述语句即可得到你期望的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 16:42:02