Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Créer un identifiant/compteur basé sur certaines colonnes partagées et séparé en fonction d'autres colonnes

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é.