Gebruik vensterfunctie DENSE_RANK()
met een OVER()
clausule:
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;
De PARTITION BY
zal de teller opnieuw starten voor elke nieuwe waarde in column1
, terwijl de ORDER BY
bepaalt de rangorde.
Hint:plak geen afbeeldingen!
Volg voor uw volgende vraag mijn voorbeeld om een op zichzelf staand voorbeeld te maken waarin uw probleem wordt gereproduceerd en voeg de code toe die u zelf hebt geprobeerd.