SQL Server中的字母数字序列



对于单个id列,我们有序列号01、02、03至99,重复两次/三次。

示例:

ID SEQ_NO
----------
2   01
2   02
2   03
.
.
.
2   99
2   01 
2   02
2   99

当第二次在seq_no上循环时,我们需要将AA前缀添加到第二次,第三次应该是BB

有人能解释一下怎么做吗?

使用ROW_NUMBER函数尝试以下操作:

如果只想选择SEQ_NO作为新列:

WITH CTE AS
(
SELECT *, ROW_NUMBER() OVER (PARTITION BY ID, SEQ_NO ORDER BY SEQ_NO) rn 
FROM table_name
)
SELECT ID, SEQ_NO,
CASE 
WHEN rn>1 THEN
CONCAT(CHAR(rn+63), CHAR(rn+63), SEQ_NO) 
ELSE SEQ_NO
END AS new_seq
FROM CTE 
WHERE rn <= 27
ORDER BY ID, new_seq

如果要更新SEQ_NO列:

WITH CTE AS
(
SELECT *, ROW_NUMBER() OVER (PARTITION BY ID, SEQ_NO ORDER BY SEQ_NO) rn 
FROM table_name
)
UPDATE CTE SET SEQ_NO = CONCAT(CHAR(rn+63), CHAR(rn+63), SEQ_NO) 

WHERE rn > 1 AND rn <= 27

请看一个带有一组数据的演示,其中seq(01-10(被重复三次。

相关内容

  • 没有找到相关文章

最新更新