SQL Server 对于每3个唯一ID,将其分组在一起并设置groupid,而不使用CASE表达式

mzsu5hc0  于 2023-01-16  发布在  其他
关注(0)|答案(1)|浏览(104)

table_name
| 身份证|
| - ------|
| 1个|
| 第二章|
| 三个|
| 四个|
| 四个|
| 五个|
| 六个|
| 六个|
| 七|
| 七|
| 七|
| 八个|
| 九|
| 九|
| 十个|
下面的SQL将给我答案Demo,但我需要硬编码每个案例,我需要知道最大(id)摆在首位。

SELECT id,
CASE 
WHEN id > '0' AND id <= '3' THEN 1 
WHEN id > '3' AND id <= '6' THEN 2 
WHEN id > '6' AND id <= '9' THEN 3 
WHEN id > '9' AND id <= '12' THEN 4
END AS groupid
FROM table_name

如何改善它没有我硬编码使用CASE。因为id列将继续增加,它将用完的情况下,稍后的某个时候。
(SQL服务器2014-内部版本v12.0.6108.1)
结果:
| 身份证|群鸟|
| - ------|- ------|
| 1个|1个|
| 第二章|1个|
| 三个|1个|
| 四个|第二章|
| 四个|第二章|
| 五个|第二章|
| 六个|第二章|
| 六个|第二章|
| 七|三个|
| 七|三个|
| 七|三个|
| 八个|三个|
| 九|三个|
| 九|三个|
| 十个|四个|

wwodge7n

wwodge7n1#

SELECT id, CEILING(id/3.0) AS groupid
FROM table_name

相关问题