Я не совсем понимаю, чего вы пытаетесь достичь - но вы можете заключить свой оператор select, включая функцию ROW_NUMBER()
, в CTE (общее табличное выражение), а затем перейти оттуда - не нужен грязный курсор, действительно плохо масштабируется:
WITH YourSelection AS
(
SELECT
ProductName,
ROW_NUMBER() OVER(ORDER BY ProductName) AS 'RowNum'
FROM dbo.Products
)
SELECT ProductName, RowNum
FROM YourSelection
Это должно дать вам названия продуктов, отсортированные по ProductName
, и соответствующие номера строк.