Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Erstellen Sie einen Bezeichner/Zähler basierend auf einigen gemeinsam genutzten Spalten und trennen Sie ihn basierend auf anderen Spalten

Verwenden Sie Fensterfunktion DENSE_RANK() mit einem OVER() Klausel:

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;

Die PARTITION BY startet den Zähler für jeden neuen Wert in column1 neu , während ORDER BY definiert das Ranking.

Hinweis:Keine Bilder einfügen!

Für Ihre nächste Frage folgen Sie bitte meinem Beispiel, um ein eigenständiges Beispiel zu erstellen, das Ihr Problem reproduziert, und fügen Sie den Code hinzu, den Sie selbst ausprobiert haben.