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

SQL Server 2012中更新bill_no使其序列连续且重复项一致

问题:SQL Server 2012中更新bill_no使其连续递增,相同datetime对应同一bill_no

原始数据

bill_nodatetime
31252022-12-26 14:17:21.000
31252022-12-26 14:17:21.000
31262022-12-26 14:31:48.000
31262022-12-26 14:31:48.000
31272022-12-26 14:39:31.000
31282022-12-26 14:44:06.000
31292022-12-26 14:46:02.000
31302022-12-26 14:53:35.000
31302022-12-26 14:53:35.000
32762022-12-26 15:19:22.000
32852022-12-26 16:52:09.000
32852022-12-26 16:52:09.000
32852022-12-26 16:52:09.000
32862022-12-26 17:33:28.000
32862022-12-26 17:33:28.000
32862022-12-26 17:33:28.000
32862022-12-26 17:33:28.000
32862022-12-26 17:33:28.000
32872022-12-26 17:39:06.000
32882022-12-26 17:41:46.000
32892022-12-26 17:55:42.000
32902022-12-26 18:11:45.000
32912022-12-26 18:21:27.000

期望结果

bill_nodatetime
31252022-12-26 14:17:21.000
31252022-12-26 14:17:21.000
31262022-12-26 14:31:48.000
31262022-12-26 14:31:48.000
31272022-12-26 14:39:31.000
31282022-12-26 14:44:06.000
31292022-12-26 14:46:02.000
31302022-12-26 14:53:35.000
31302022-12-26 14:53:35.000
31312022-12-26 15:19:22.000
31322022-12-26 16:52:09.000
31322022-12-26 16:52:09.000
31322022-12-26 16:52:09.000
31332022-12-26 17:33:28.000
31332022-12-26 17:33:28.000
31332022-12-26 17:33:28.000
31332022-12-26 17:33:28.000
31332022-12-26 17:33:28.000
31342022-12-26 17:39:06.000

解决方案

使用CTE结合DENSE_RANK()函数为每个唯一的datetime分配连续的bill_no,再更新原表:

WITH RankedDates AS (
    SELECT 
        datetime,
        -- 以原数据最小bill_no3125为起始,生成连续序号
        3125 + DENSE_RANK() OVER (ORDER BY datetime) - 1 AS new_bill_no
    FROM your_table
    GROUP BY datetime
)
UPDATE t
SET t.bill_no = rd.new_bill_no
FROM your_table t
INNER JOIN RankedDates rd ON t.datetime = rd.datetime;

说明

  • DENSE_RANK()按datetime排序,为每个唯一时间分配连续排名,不会跳过序号
  • 通过GROUP BY datetime避免重复计算同一时间的排名
  • 最终通过JOIN将新生成的连续bill_no更新回原表对应记录

验证更新结果可执行:

SELECT bill_no, datetime FROM your_table ORDER BY datetime, bill_no;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 06:13:10