大家好,我正在处理的表中有大约200万条记录,我想基于acc_no添加两列PageNo和serialNo
例如:-
acc_no PageNo SerialNo
abc1 0001 0001
cbf2 0001 0002
.
.
zcd6 0001 9999
一旦SerialNo达到9999,则PageNo从0002开始
eg:-
acc_no PageNo SerialNo
abc1 0002 0001
cbf2 0002 0002
.
.
zcd6 0002 9999
等等 我尝试过
Select right('0000'+cast(ROW_NUMBER() over(order by acc_no) as varchar(100)),4) PageNo,acc_no from [table Name]
但是我没有得到该怎么做需要帮助
答案 0 :(得分:3)
使用此
select acc_no, ((rno-1) /9999) +1 pageNo, ((rno-1) % 9999) + 1 SerialNo
from (
SELECT acc_no , (ROW_NUMBER() over(order by acc_no )) rno
FROM [table Name]
) t
答案 1 :(得分:2)
您可以尝试以下方法:
SELECT
Acc_No,
((ROW_NUMBER() OVER (ORDER BY Acc_No) - 1) / 9999 + 1) AS PageNo,
((ROW_NUMBER() OVER (ORDER BY Acc_No) - 1) % 9999 + 1) AS SerialNo
FROM [Table Name]
第PageNo
和SerialNo
列以数字形式返回,因此您需要按预期进行转换,例如SELECT FORMAT(1, '0000') -- 0001
。