【发布时间】:2018-11-01 16:09:39
【问题描述】:
我用这个脚本创建了一个表:
CREATE TABLE [dbo].[BatchTest](
[Col1] [varchar](50) NULL,
[Col2] [varchar](50) NULL,
[Col3] [varchar](50) NULL,
[Id] [int] IDENTITY(1,1) NOT NULL,
[BatchId] [int] NOT NULL,
CONSTRAINT [PK_BatchTest] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
我一直想知道是否可以使用 CTE 来实现这一点: 将第一组记录的 BatchId 列的值设置为固定数字,然后对于每个下一组记录,BatchId 的值应为:prev。组号 + 1.. 以此类推
按子句分组:Col1,Col2,Col3
结果:
A B C 34
A B C 34
A B C 34
A B C 34
A B D 35
A B D 35
A B D 35
A B D 35
A B E 36
A B E 36
A B E 36
A B E 36
开始编号。在这种情况下为 34。依此类推,为下一组记录增加它。起始编号由用户输入。
提前致谢!
【问题讨论】:
-
这听起来像是一个 X Y 问题。 xyproblem.info你到底想做什么?
-
另外,向我们展示 DDL 表是提出问题的良好第一步,但我们需要查看实际使用该表的代码才能为您提供帮助。
-
好吧,我尝试了一些查询,但不值得在描述中添加,因为它们没有给出接近我想要达到的结果。
标签: tsql sql-server-2017