У нас есть представление в нашей базе данных, в которой есть ORDER BY. Теперь я понимаю, что взгляды вообще не заказывают, потому что разные люди могут использовать его для разных вещей и хотят, чтобы это было по-другому. Однако этот взгляд используется для использования ОЧЕНЬ СПЕЦИФИЧНЫЙ, который требует определенного порядка. (Это командная таблица для футбольной лиги.)
База данных - это Sql Server 2008 Express, v.10.0.1763.0 в окне Windows Server 2003 R2.
Вид определяется как таковой:
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
Он возвращает:
GENDER, TEAMYEAR, CODE, TEAMID, CLUB, NAME,
WINS, LOSSES, TIES, GOALS_FOR, GOALS_AGAINST,
DIFFERENTIAL, POINTS, FORFEITS, RANKING
Теперь, когда я запускаю SELECT против представления, он заказывает результаты с помощью GENDER, TEAMYEAR, CODE, TEAMID. Обратите внимание, что он упорядочивает TEAMID вместо POINTS, как указано в предложении order by.
Однако, если я скопирую инструкцию SQL и запустил ее точно так же, как в новом окне запроса, она правильно упорядочивается, как указано в предложении ORDER BY.