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

SQL生成文档编号:MDK为0时修改DocNum的查询语句咨询

解决方法

根据你的需求——当MDK列的值为0时,按idn4排序生成DocNum字段,你当前的查询逻辑刚好和需求相反,只需要调整CASE语句的判断条件即可:

SELECT [idn4], [MDK],
    CASE
        WHEN [MDK] = 0 THEN ROW_NUMBER() OVER (ORDER BY [idn4])
        ELSE NULL
    END AS DocNum
FROM 你的表名;

说明

  • 该语句会为所有MDK=0的行,按照idn4的顺序生成连续的序号作为DocNum;
  • 对于MDK≠0的行,DocNum会返回NULL,匹配你“仅在MDK变为0时修改DocNum”的需求。

如果你的实际需求是以MDK=0作为分组节点,每个分组内按idn4排序重新编号(比如每遇到一个MDK=0就开启新的计数序列),可以使用带分区逻辑的窗口函数实现:

SELECT [idn4], [MDK],
    CASE
        WHEN [MDK] = 0 THEN ROW_NUMBER() OVER (PARTITION BY 分组标识 ORDER BY [idn4])
        ELSE NULL
    END AS DocNum
FROM (
    -- 生成分组标识:每遇到MDK=0则创建一个新分组
    SELECT *,
        SUM(CASE WHEN [MDK] = 0 THEN 1 ELSE 0 END) OVER (ORDER BY [idn4]) AS 分组标识
    FROM 你的表名
) AS t;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 21:24:58