Этот запрос даст вам номер строки,
SELECT
(SELECT COUNT(*) FROM @table t2 WHERE t2.field <= t1.field) AS row_number,
field,
otherField
FROM @table t1
, но есть некоторые ограничения , когда вы хотите его использовать. В вашей таблице должен быть один столбец (в примере это field
), который является уникальным и числовым, и вы можете использовать его в качестве справочного материала. Например:
DECLARE @table TABLE
(
field INT,
otherField VARCHAR(10)
)
INSERT INTO @table(field,otherField) VALUES (1,'a')
INSERT INTO @table(field,otherField) VALUES (4,'b')
INSERT INTO @table(field,otherField) VALUES (6,'c')
INSERT INTO @table(field,otherField) VALUES (7,'d')
SELECT * FROM @table
1010 * возвращается *
field | otherField
------------------
1 | a
4 | b
6 | c
7 | d
и
SELECT
(SELECT COUNT(*) FROM @table t2 WHERE t2.field <= t1.field) AS row_number,
field,
otherField
FROM @table t1
возвращает
row_number | field | otherField
-------------------------------
1 | 1 | a
2 | 4 | b
3 | 6 | c
4 | 7 | d
Это решение без функций и хранимых процедур, но, как я уже сказал, есть ограничения. Но в любом случае, может быть, вам этого достаточно.