ORDER BY в представлении Sql Server 2008
у нас есть представление в нашей базе данных, в котором есть 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
Теперь, когда я бегуВЫБРАТЬ напротив, он упорядочивает результаты поГЕНДЕР, КОМАНДА, КОД, КОМАНДА, Обратите внимание, что это заказTeamID вместоТОЧКИ как указано в порядке заказа.
Тем не менее, если я скопирую инструкцию SQL и выполню ее точно так же, как в новом окне запроса, он упорядочится правильно, как указано вСОРТИРОВАТЬ ПО пункт.