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

SQL Server中截断RID后缀后按RID分组汇总QTY的实现方法

SQL Server 按标准化RID分组聚合实现方案

核心实现逻辑

  • RID标准化处理:定位RID字段中第一个.的位置,截取该位置前的内容作为标准化RID;如果RID本身不带.后缀,直接保留原值
  • LID字段规则:按标准化RID分组后,统计组内去重后的LID数量,数量为1时保留该唯一LID值,其余情况统一置为NULL
  • QTY字段处理:直接对分组内所有QTY值求和得到汇总结果

兼容全版本SQL Server的实现代码

SELECT
    -- 生成去后缀的标准化RID
    CASE
        WHEN CHARINDEX('.', RID) > 0 THEN LEFT(RID, CHARINDEX('.', RID) - 1)
        ELSE RID
    END AS StdRID,
    -- 按规则返回LID
    CASE
        WHEN COUNT(DISTINCT LID) = 1 THEN MAX(LID)
        ELSE NULL
    END AS LID,
    -- 汇总QTY
    SUM(QTY) AS TotalQTY
FROM YourBusinessTable -- 替换为你实际使用的业务表名
GROUP BY
    CASE
        WHEN CHARINDEX('.', RID) > 0 THEN LEFT(RID, CHARINDEX('.', RID) - 1)
        ELSE RID
    END

场景适配说明

  • 上述RID截取逻辑适配单段数字后缀场景。如果业务中存在多段点分隔后缀(如B123.2.1),需要截取最后一个.之前内容的话,将定位.位置的表达式替换为LEN(RID) - CHARINDEX('.', REVERSE(RID)) + 1即可
  • 现有逻辑会自动忽略LID为NULL的行进行去重计数,如果组内同时存在非NULL LID和NULL LID,会判定为多值场景返回NULL。如果需要将NULL也作为一个有效值参与判断,可以调整CASE中的计数条件
  • SUM函数默认会忽略QTY为NULL的行,如果需要将NULL值按0计入汇总,将SUM(QTY)替换为SUM(ISNULL(QTY, 0))即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 02:51:58