J'ai une simple déclaration de sélection. Je souhaite ajouter une colonne temporaire qui numérotera les lignes de mon jeu de résultats. J'ai essayé ceci -
declare @num int
set @num = 0;
select t.A, t.B, t.C, (@count + 1) as number
from tableZ as t
Il attribue le 1 à toutes les lignes. J'ai essayé @count = @count +1 et cela n'a pas fonctionné. Comment puis-je faire cette chose d'une manière simple?
merci.
Le modèle typique serait le suivant, mais vous devez définir réellement la manière dont l'ordre doit être appliqué (puisqu'un tableau est, par définition, un sac de lignes non ordonné):
SELECT t.A, t.B, t.C, number = ROW_NUMBER() OVER (ORDER BY t.A)
FROM dbo.tableZ AS t
ORDER BY t.A;
Vous ne savez pas ce que les variables de votre question sont censées représenter (elles ne correspondent pas).
SELECT
t.A,
t.B,
t.C,
ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS number
FROM tableZ AS t
Voir exemple de travail à SQLFiddle
Bien sûr, vous pouvez définir l'ordre de numérotation des lignes. Dans ce cas, il vous suffit d'échanger OVER (ORDER BY (SELECT 1))
contre, par exemple, OVER (ORDER BY t.C)
, comme dans une clause ORDER BY
Normale.