2011-01-06 19 views
7

me gustaría crear una declaración de consulta de selección con autonumber .. como ..autonumber de instrucción de selección en SQL Server

select * from tbl1 

me dará todo de mesa.

El resultado me gustaría conseguir es ..

1   data 
2   data 
3   data 

Entonces, ¿cómo puedo hacer para conseguir que el número .. ??

como ..

select (for autonumber), * from tbl1 

se repite los datos en mi mesa (sin datos única)

Respuesta

19

Uso ROW_NUMBER:

SELECT ROW_NUMBER() OVER (ORDER BY col1) AS rn, * FROM tbl1 

Para filtrar los resultados basándose en el número de uso fila esto:

SELECT * FROM 
(
    SELECT ROW_NUMBER() OVER (ORDER BY col1) AS rn, * FROM tbl1 
) T1 
WHERE rn = 5 
+0

sí .. esa es la respuesta correcta. Me gustaría hacer algo como ... SELECCIONAR ROW_NUMBER() OVER (ORDER BY col1) AS rn, * FROM tbl1 donde rn = 5; Aparentemente no funciona así ... ¿alguna solución para eso? – william

+1

@william: Necesita generar el número de fila en una tabla derivada y filtrar en una selección externa. Actualizaré mi respuesta para demostrar esto. –

+0

Puedo parecer estúpido para hacer esta pregunta. Pero, ¿cuál es T1? Y no puedo poner 'orden por' en la declaración de selección interna, ¿es eso normal? – william

0

Es posible que deba encontrar el desplazamiento de la identidad, p. última ID de la segunda tabla:

DECLARE @lastAutoID int 
SET @lastAutoID = abs((Select max(convert(float,[ConsID])) 
FROM [RXPIPEDB]...[consumption])) 

A continuación, utilice ROW_NUMBER():

Cuestiones relacionadas