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

如何按日期时间为临时表设置自动IDENTITY列

解决方案:按分组生成连续递增序号

你当前的代码用IDENTITY(INT, 1, 2)生成的是全局自增且步长为2的序号,这就是为啥输出里Orderid是1、3、5这类不连续的序列。而你需要的是每个CODE分组内从1开始连续递增的序号,这时候得用窗口函数ROW_NUMBER()来实现,IDENTITY列做不到分组内的序号控制。

修改后的代码

SELECT 
    ROW_NUMBER() OVER(PARTITION BY CODE ORDER BY [DATE], [TIME]) AS Orderid,
    CODE,
    [DATE],
    [TIME]
INTO #Temp
FROM Table1
ORDER BY CODE, [DATE], [TIME];

SELECT * FROM #Temp;

代码说明

  • ROW_NUMBER() OVER(PARTITION BY CODE ORDER BY [DATE], [TIME])是核心逻辑:PARTITION BY CODE会把数据按CODE拆分成独立的组,每个组内按照[DATE]和[TIME]排序,然后为每组生成从1开始的连续序号,完全匹配你想要的输出效果。
  • 对比原来的IDENTITY写法,这个方式能精准控制序号在分组内的递增规则,不会出现跨组的全局自增问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:08:55