gpt4 book ai didi

sql - 按特定标识符对行进行分组并更新组 ID 列以跟踪它们属于哪个组

转载 作者:搜寻专家 更新时间:2023-10-30 21:45:45 29 4
gpt4 key购买 nike

有一个表,其中组 ID 列需要用生成的增量数字填充,如下例所示:

name batch
a 1
b 1
c 1
d 2
e 2
f 2
g 3
h 3
i 3
j 4
k 4

顺序无关紧要,只要组具有相同数量的元素

寻找一些想法如何实现这一目标。

我当时的想法是构建一个迭代结果集的存储过程。

我还有这个正在使用的“伪代码”,但显然有问题,而且也没有做更新部分只是一种选择,我正在考虑创建一个看起来有点矫枉过正的临时表

SELECT
name,
batch = (ROW_NUMBER() OVER(ORDER BY name)) % ((Select COUNT(*) from [abc].[dbo].[cdg]) / 30))
FROM
[abc].[dbo].[cdg] x

最佳答案

试试这个整数除法

Declare @param int  = 3

SELECT name,
( ( Row_number()OVER(ORDER BY name) - 1 ) / @param ) + 1 as Batch
FROM tablename

如果你想从表 count 中导出 @param 然后使用 Count(*) Over()

SELECT name,
( ( Row_number()OVER(ORDER BY name) - 1 ) / (Count(*) Over()/30) ) + 1 as Batch
FROM tablename

更新batch

;with update_cte as
(
SELECT name,
Batch,
( ( Row_number()OVER(ORDER BY name) - 1 ) / @param ) + 1 as gen_seq
FROM tablename
)
Update update_cte set Batch = gen_seq

关于sql - 按特定标识符对行进行分组并更新组 ID 列以跟踪它们属于哪个组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44847743/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com