tenemos una vista en nuestra base de datos que tiene un ORDER BY en ella. Ahora, me doy cuenta de que las vistas generalmente no ordenan, porque diferentes personas pueden usarlo para diferentes cosas, y quieren que se ordene de manera diferente. Sin embargo, esta vista se utiliza para un caso de uso MUY ESPECÍFICO que exige un cierto orden. (Es una clasificación de equipo para una liga de fútbol).ORDER BY en una vista Sql Server 2008
La base de datos es Sql Server 2008 Express, v.10.0.1763.0 en un cuadro de Windows Server 2003 R2.
La vista se define como tal:
CREATE VIEW season.CurrentStandingsOrdered
AS
SELECT TOP 100 PERCENT *, season.GetRanking(TEAMID) RANKING
FROM season.CurrentStandings
ORDER BY
GENDER, TEAMYEAR, CODE, POINTS DESC,
FORFEITS, GOALS_AGAINST, GOALS_FOR DESC,
DIFFERENTIAL, RANKING
Devuelve:
GENDER, TEAMYEAR, CODE, TEAMID, CLUB, NAME,
WINS, LOSSES, TIES, GOALS_FOR, GOALS_AGAINST,
DIFFERENTIAL, POINTS, FORFEITS, RANKING
Ahora, cuando corro un SELECT contra de la opinión, ordena los resultados por GÉNERO, TEAMYEAR , CODE, TEAMID. Observe que está ordenando por TEAMID en lugar de PUNTOS como especifica la cláusula order by.
Sin embargo, si copio la instrucción SQL y ejecutarlo exactamente como está en una nueva ventana de consulta, ordena correctamente según lo especificado por el ORDER BY cláusula.
¡Eso es molesto! Puedo ver/entender un poco no garantizándolo en una VISTA, tipo de ... pero al menos debería funcionar en una función con valores de tabla. GRRR. Gracias por la respuesta de todos modos. :) – eidylon