Добавить номер строки в результирующий набор 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, и это не сработало.
Как я могу сделать это в простой форме?
спасибо.
Ответы
Ответ 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
.