te diria que con row_number pero lo que necesitas es que aumente el numero cuando haya un cambio, aunque los nombres repitan entonces podemos hacer esto:
Código SQL:
Ver originalCREATE TABLE #temp
(
nombre VARCHAR(20)
)
CREATE TABLE #resultado
(
nombre VARCHAR(20),
contador INT
)
INSERT INTO #temp VALUES ('LUIS')
INSERT INTO #temp VALUES ('LUIS')
INSERT INTO #temp VALUES ('FELIPE')
INSERT INTO #temp VALUES ('FELIPE')
INSERT INTO #temp VALUES ('FELIPE')
INSERT INTO #temp VALUES ('ANA')
INSERT INTO #temp VALUES ('ANA')
INSERT INTO #temp VALUES ('LUIS')
INSERT INTO #temp VALUES ('ALMA')
INSERT INTO #temp VALUES ('ALMA')
INSERT INTO #temp VALUES ('FELIPE')
SELECT *,IDENTITY(INT,1,1) rn INTO #temp2 FROM #temp
DECLARE @x INT
DECLARE @contador INT
DECLARE @nombre VARCHAR(20)
DECLARE @nombre_ant VARCHAR(20)
SET @x=1
SET @contador=1
while @x<=(SELECT COUNT(*) FROM #temp2)
BEGIN
SELECT @nombre=nombre FROM #temp2 WHERE rn=@x
IF @x=1
SELECT @nombre_ant=nombre FROM #temp2 WHERE rn=1
ELSE
SELECT @nombre_ant=nombre FROM #temp2 WHERE rn=@x-1
IF @nombre<>@nombre_ant
SET @contador=@contador+1
INSERT INTO #resultado VALUES (@nombre,@contador)
print @nombre
print @contador
SET @x=@x+1
END
SELECT * FROM #resultado
saludos!