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

MS SQL分组查询需求:基于LOGGING STATUS对ID分类

没问题,我来帮你搞定这个MS SQL的分组分类需求~

首先得明确核心要求:每个ID最终只返回一行记录,根据该ID下所有LOGGING STATUS的整体情况统一输出状态值,同时保留对应的ZIP-CODE。下面分几种常见场景给你对应的SQL语句:

解决方案

1. 基础场景:每个ID的ZIP-CODE唯一,状态仅全失败/全成功

如果你的数据里同一个ID的ZIP-CODE都是一致的,且每个ID的LOGGING STATUS要么全是fail要么全是success,直接用聚合函数就能搞定:

SELECT
    ID,
    UPPER(MIN(LOGGING_STATUS)) AS STATUS, -- 用MIN/MAX都行,因为同ID状态一致,UPPER转成大写和你示例格式匹配
    MIN(ZIP-CODE) AS ZIP-CODE -- 同IDZIP一致,MIN/MAX/ANY_VALUE都可以
FROM
    YourTableName -- 替换成你的实际表名
GROUP BY
    ID;

比如ID#9630全是fail,执行后会返回一行:9630 | FAIL | 8959,符合你要的单ID单行要求(你示例里写了两行,应该是笔误吧😉)。

2. 进阶场景:ID存在混合状态(既有fail又有success)

如果你的数据里有同一个ID同时存在fail和success的情况,我们可以用CASE语句标记这种混合状态:

SELECT
    ID,
    CASE
        WHEN COUNT(DISTINCT LOGGING_STATUS) = 1 THEN UPPER(MIN(LOGGING_STATUS))
        ELSE 'MIXED' -- 可以改成你需要的其他标识,比如'PARTIAL_SUCCESS'
    END AS STATUS,
    MIN(ZIP-CODE) AS ZIP-CODE
FROM
    YourTableName
GROUP BY
    ID;

这个语句会自动判断:

  • 当ID下只有一种状态时,输出对应的大写状态
  • 当ID下同时有两种状态时,输出MIXED(你可以根据需求改成其他描述)

3. 特殊情况:同一个ID对应多个不同ZIP-CODE

如果你的数据里同一个ID有不同的ZIP-CODE,那得先明确需求:

  • 要是想按「ID+ZIP」分组(每个组合一行),就把ZIP-CODE加入GROUP BY:
SELECT
    ID,
    CASE
        WHEN COUNT(DISTINCT LOGGING_STATUS) = 1 THEN UPPER(MIN(LOGGING_STATUS))
        ELSE 'MIXED'
    END AS STATUS,
    ZIP-CODE
FROM
    YourTableName
GROUP BY
    ID, ZIP-CODE;
  • 要是只想保留该ID的任意一个ZIP,继续用MIN()/MAX()取就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:25:34