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