Utilisez fonction de fenêtrage DENSE_RANK()
avec un OVER()
clause :
DECLARE @tbl TABLE(Column1 INT,Column2 INT,Column3 VARCHAR(100));
INSERT INTO @tbl VALUES(1,1,'A')
,(1,2,'A')
,(1,3,'B')
,(2,1,'A')
,(2,2,'A')
,(2,3,'B')
,(3,1,'A')
,(3,2,'B')
,(3,3,'V');
SELECT *
,DENSE_RANK() OVER(PARTITION BY Column1 ORDER BY Column3) AS ComputedColumn
FROM @tbl;
La PARTITION BY
redémarrera le compteur pour chaque nouvelle valeur dans column1
, tandis que le ORDER BY
définit le classement.
Conseil :ne collez pas d'images !
Pour votre prochaine question, veuillez suivre mon exemple pour créer un exemple autonome reproduisant votre problème et ajouter le code que vous avez vous-même essayé.