con los datos que tienes de ejemplo obtengo esto:
Código SQL:
Ver originalCREATE TABLE #t1 (campo1 INT, campo2 VARCHAR(10))
INSERT INTO #t1 VALUES (1,'a')
INSERT INTO #t1 VALUES (1,'b')
INSERT INTO #t1 VALUES (1,'c')
INSERT INTO #t1 VALUES (2,'d')
INSERT INTO #t1 VALUES (1,'e')
INSERT INTO #t1 VALUES (2,'f')
INSERT INTO #t1 VALUES (1,'g')
INSERT INTO #t1 VALUES (1,'h')
INSERT INTO #t1 VALUES (1,'i')
GO
SELECT rank() OVER (partition BY campo1 ORDER BY campo2) AS id,
campo1,
campo2
FROM #t1
1 1 a
2 1 b
3 1 c
4 1 e
5 1 g
6 1 h
7 1 i
1 2 d
2 2 f
que version de sql server estas usando? estas usando el rank()?