Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何以有限的价值增值_Sql_Sql Server_Sql Server 2012 - Fatal编程技术网

Sql 如何以有限的价值增值

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)

大家好,我正在处理中的表,我有大约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) 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