2012-05-29 22 views
11

Me encontré con una sintaxis algo especial, ¿podría ayudarme a entender lo que significa? Gracias.NÚMERO DE FILA() OVER

SELECT ROW NUMBER() OVER (ORDER BY Product.ProductID) FROM Product; 

Además, esto no funciona. Estoy particularmente interesado en el bit ROW NUMBER() OVER. Es la primera vez que me encuentro con la palabra clave OVER.

Háganme saber si necesita el ejemplo completo. Lo acorté un poco por el bien de la claridad.

+4

http://msdn.microsoft.com/en-us/library/ms186734.aspx –

Respuesta

9

la función ROW_NUMBER() requiere el OVER (ORDER BY) expresión para determinar la ord er que las filas están numeradas. El orden predeterminado es ascendente pero descendente también se puede usar. Esta función es útil para una variedad de cosas, como hacer un seguimiento de las filas cuando se itera a través de un conjunto de registros, ya que T-SQL no permite recuperar un cursor fuera de T-SQL. @tunimise fasipe es correcto, falta el _

+0

¡Muchas gracias a ambos! Es gracioso porque el libro que estoy leyendo contiene varios ejemplos, cada vez sin el guión bajo. Fui engañado. Hubiera entendido un error tipográfico, pero 3 de lo mismo? Muchas gracias. –

6

en cuenta que su faltan el subrayado en ROW_NUMBER

SELECT ROW_NUMBER() OVER (ORDER BY Products.ProductID) FROM Products; 

Lo que hace es que se imprime el número de fila de cada registro de la tabla productos en el orden en que fueron recuperados (según lo ordenado por ProductID)

e.g. 
RowNumber ProductName 
------------------------ 
1   Flower 
2   Bag 
3   Car 
...   ... 

I añadió la columna de la ProductName para mayor claridad

+0

El orden en que se recuperan está determinado por ORDER BY- la columna ProductID en Orden de ASC en este caso. –