Estos días me he encotrado con el mismo problema varias veces, por eso me he decidido a escribir sobre él. Cuando nosotros creábamos una vista en SQL Server 2000, el Order By solo estaba soportado si lo utilizábamos con la cláusula TOP para obtener solo un número determiando de filas. A pesar de no estar soportado, muchos desarrolladores utilizaron el truco de poner TOP 100 PERCENT, y al bueno de SQL Server 2000 le colaba, a pesar de no estar soportado. Claro, los lamentos vienen ahora cuando intentamos migrar esas vistas a SQL Server 2005, en donde el truquito ya no funciona. La solución es bien sencilla, y es lo que debería de haberse hecho en SQL Server 2000, si siguiésemos las buenas prácticas: EL ORDER BY EN LA LLAMADA A LA VISTA, NO DENTRO DE ELLA. Un poco de código para ilustrarlo:

USE TempDB
GO
CREATE TABLE testTable (idTest int, nombre varchar(30),cantidad int)
GO
INSERT INTO testTable values (1,'Antonio',23)
INSERT INTO testTable values (2,'Juan',3)
INSERT INTO testTable values (3,'Antonio',32)
GO
CREATE VIEW testView AS
SELECT nombre, sum(cantidad) as suma
FROM testTable
GROUP BY nombre
SELECT * FROM testView ORDER BY suma
0 Shares:
Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

You May Also Like
Leer más

Aplicando seguridad a métricas SSAS

Aplicando seguridad a métricas SSAS. Para controlar la seguridad de los objetos, operaciones y datos de Analysis Services se utilizan roles (grupos de usuarios). Los usuarios se pueden añadir o quitar de los roles y para esos roles se determinan unos permisos.