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

SQL Server动态CTE生成带字母后缀连续序号无法自增问题求解

问题原因

你的现有递归CTE仅实现了单个seqno对应4个字母后缀的生成,没有加入seqno自增的遍历逻辑,同时输出时也没有把seqno和字母后缀做拼接,所以只能得到108对应的4条单字母后缀的结果。

修正后的SQL代码

DECLARE @OrderID INT = 215332, @MCHID INT = 188, @bbs_ups INT
DECLARE @StartSeqno INT, @SeqCount INT = 4 -- 可调整该参数控制需要生成的seqno数量,当前设为4对应108、109、110、111四个值

SET @bbs_ups = 4
-- 提取起始seqno
SELECT @StartSeqno = ISNULL((SELECT TOP 1 bbd_bundle_seqno 
                FROM BAG_BundleStickerDetails 
                WHERE bbd_order_id_fk = @OrderID 
                  AND bbd_mch_id_fk = @MCHID 
                  AND bbd_status = 'A' 
                ORDER BY bbd_id DESC), 0)

;WITH SeqList AS (
    -- 生成所需的seqno序列:从起始值开始共@SeqCount个
    SELECT 1 as seq_counter, @StartSeqno as seqno
    UNION ALL
    SELECT seq_counter + 1, seqno + 1
    FROM SeqList
    WHERE seq_counter < @SeqCount
),
SuffixList AS (
    -- 生成A-D的后缀序列
    SELECT 1 as suffix_counter, CHAR(ASCII('A')) as suffix
    UNION ALL
    SELECT suffix_counter + 1, CHAR(ASCII(suffix) + 1)
    FROM SuffixList
    WHERE suffix_counter < @bbs_ups
)
-- 两个序列笛卡尔关联得到所有组合,拼接后缀即可
SELECT 
    seqno, 
    CONCAT(seqno, suffix) as seqno_ups_desc
FROM SeqList CROSS JOIN SuffixList
ORDER BY seqno, suffix

核心改动说明

  • 拆分两个递归CTE分别处理seqno序列、后缀序列的生成,逻辑更清晰易维护
  • 用CROSS JOIN对两个序列做笛卡尔积,自动得到每个seqno对应4个后缀的全量组合
  • 通过CONCAT函数拼接seqno和字母后缀,直接输出符合格式要求的seqno_ups_desc字段
  • 调整@SeqCount参数即可灵活控制需要生成的seqno数量,适配不同业务需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:18:01