Sql 如何以有限的价值增值
大家好,我正在处理中的表,我有大约200万条记录,我想根据acc_no添加两列PageNo和serialNo 例如:- 一旦SerialNo到达9999,则PageNo从0002开始Sql 如何以有限的价值增值,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,大家好,我正在处理中的表,我有大约200万条记录,我想根据acc_no添加两列PageNo和serialNo 例如:- 一旦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)
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]
但是我不知道如何做需要帮助使用这个
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
用这个
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
您可以尝试以下方法:
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
您可以尝试以下方法:
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
谢谢你的回答,但当PageNo从2序列开始时我希望它从1开始工作非常感谢@Milad谢谢你的回答,但当PageNo从2序列开始时我希望它从1开始工作非常感谢@Milad