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?

Escrito por un humano, no por una IA