對于單個id列,我們有序列號 01、02、03 到 99,重復兩次/三次。
例子:
ID SEQ_NO
----------
2 01
2 02
2 03
.
.
.
2 99
2 01
2 02
2 99
我們需要在AA第二次回圈時添加前綴seq_no,第三次應該是BB。
誰能解釋如何做到這一點?
uj5u.com熱心網友回復:
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) 重復了 3 次。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/521481.html
下一篇:更新表時物體框架截斷小數位
