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

按UnitType分组Code列并限制每组最多100条(解决STRING_AGG超限)

解决STRING_AGG字节溢出并按每组100条拆分的方案

直接上可执行的SQL方案,核心思路是先给每个UnitType下的Code分配行号,再按行号计算分组(每100条一组),最后按UnitType和分组号做聚合:

WITH RankedCodes AS (
    SELECT 
        UnitType,
        Code,
        -- 给每个UnitType下的Code排号,排序字段可根据实际需求调整
        ROW_NUMBER() OVER (PARTITION BY UnitType ORDER BY Code) AS RowNum,
        -- 计算组号,每100条一组
        CEILING(ROW_NUMBER() OVER (PARTITION BY UnitType ORDER BY Code) / 100.0) AS GroupNum
    FROM YourTable -- 替换成你的表名
)
SELECT 
    UnitType,
    GroupNum,
    -- 指定STRING_AGG返回MAX长度类型,避免单组内溢出
    STRING_AGG(Code, ',') WITHIN GROUP (ORDER BY Code) AS CodeList
FROM RankedCodes
GROUP BY UnitType, GroupNum
ORDER BY UnitType, GroupNum;

关键细节说明

  • ROW_NUMBER():确保每个UnitType下的Code有连续序号,排序字段ORDER BY Code可换成你需要的排序逻辑(比如创建时间、ID)
  • CEILING(...):用100.0而非100是为了触发浮点计算,避免整数除法导致分组错误(比如第100条会被分到第1组,第101条分到第2组)
  • STRING_AGG类型处理:如果你的Code是VARCHAR类型,可手动转成MAX长度避免溢出:STRING_AGG(CAST(Code AS VARCHAR(MAX)), ',');若为NVARCHAR,结果会自动使用NVARCHAR(MAX),无需额外转换

这样处理后,每个UnitType会被拆分成N个小组,每组最多100条Code,既解决了原有的字节溢出问题,也满足了分组条数限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 06:29:57