?id=947cff94-0e2a-433e-980f-d2718b9f46c5
Cómo ordenar los resultados de una vista en SQL Server
por José M. Alarcón
Las vistas de SQL Server son muy útiles para utilizar consultas complicadas como si se trataran de simples tablas. Entre sus limitaciones, sin embargo, hay una que (a mi por lo menos) me resulta muy irritante: no se pueden ordenar. Es decir no se puede utilizar la cláusula ORDER BY en la sentencia SQL que define la vista.
Este truco permite saltarse las normas a la torera y utilizar ordenaciones de todos modos en las vistas. Y es que según la documentación la cláusula TOP de SQL siempre se puede usar con ORDER BY, incluso en las vistas, ya que si no no notendría mucho sentido ¿verdad?.
TOP sirve para obtener los 'x' primeros resultados de una consulta. Por ejemplo, si quiero obtener los últimos 1.000 registros de facturas de una tabla puedo escribir:
SELECT TOP 1000 * FROM Facturas ORDER BY NumFact DESC
Lo que muchas gente no sabe es que TOP admite una sintaxis alternativa que permite especificar un porcentaje de filas a devolver en lugar de un número absoluto. Esta es la cuestión que nos interesa ya que entonces basta con escribir:
CREATE VIEW FacturasAlReves
AS
SELECT TOP 100 PERCENT * FROM Facturas ORDER BY NumFact DESC
GO
para crear una vista de la tabla facturas que contiene todos sus registros ordenados en sentido inverso al normal.
Este es un ejemplo tonto, claro, pero lo que pretendo ilustrar es la técnica que nos permite saltarnos la restricción de orden de las vistas, que es usar TOP para obtener el 100% de los registros.
Interesante y útil ¿verdad?
José Manuel Alarcón Aguín
Fundador de
campusMVP.es, el
proyecto de referencia en formación on-line para programadores en lengua española.
Autor de varios libros y cientos de artículos. Galardonado como
MVP de Microsoft desde 2004. Gallego de Vigo, amante de la ciencia y la
tecnología, la música y la lectura. Ayudando a la gente en Internet desde 1996.