表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个|
| 四个|第二章|
| 四个|第二章|
| 五个|第二章|
| 六个|第二章|
| 六个|第二章|
| 七|三个|
| 七|三个|
| 七|三个|
| 八个|三个|
| 九|三个|
| 九|三个|
| 十个|四个|
1条答案
按热度按时间wwodge7n1#