Подтвердить что ты не робот

Добавить номер строки в результирующий набор SQL-запроса

У меня есть простой оператор select. Я хочу добавить временный столбец, который будет указывать строки в моем результирующем наборе. Я пробовал это -

declare @num int
set @num = 0;
select t.A, t.B, t.C, (@count + 1) as number
from tableZ as t

Он присваивает 1 всем строкам. Я попробовал @count = @count + 1, и это не сработало. Как я могу сделать это в простой форме?

спасибо.

4b9b3361

Ответ 1

Типичный шаблон будет выглядеть следующим образом, но вам нужно фактически определить, как следует применять порядок (поскольку таблица по определению представляет собой неупорядоченный пакет строк):

SELECT t.A, t.B, t.C, number = ROW_NUMBER() OVER (ORDER BY t.A)
  FROM dbo.tableZ AS t
  ORDER BY t.A;

Не уверен, какие переменные в вашем вопросе должны представлять (они не совпадают).

Ответ 2

SELECT
    t.A,
    t.B,
    t.C,
    ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS number
FROM tableZ AS t

См. рабочий пример в SQLFiddle

Конечно, вы можете определить порядок нумерации строк - если это так, просто замените OVER (ORDER BY (SELECT 1)) на, например, OVER (ORDER BY t.C), как в обычном ORDER BY.