Как увеличить с ограниченным значением - PullRequest
0 голосов
/ 01 октября 2018

Привет всем, я работаю над таблицей, у меня около 2 миллионов записей, и я хочу добавить два столбца PageNo и serialNo на основе acc_no

Например: -

acc_no PageNo SerialNo
abc1   0001   0001
cbf2   0001   0002
.
.
zcd6   0001   9999 

Once 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] 

Но я не понимаю, как это сделать Нужна помощь

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Вы можете попробовать это:

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.

0 голосов
/ 01 октября 2018

используйте это

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
...