sql-server SQL Server中的字母数字序列

hjqgdpho  于 2022-10-31  发布在  SQL Server
关注(0)|答案(1)|浏览(201)

对于单个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
谁能解释一下怎么做?

mgdq6dx1

mgdq6dx11#

请尝试使用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

请参见demo,其中一组数据的seq(01 - 10)重复三次。

相关问题