我们有一个视图在我们的数据库中有一个ORDER BY。 现在,我意识到视图通常不会排序,因为不同的人可能会将它用于不同的事情,并希望它以不同的顺序排列。然而,这个视图用于需要特定顺序的非常具体的用例。 (这是一个足球联赛的团队排名)。ORDER BY在Sql Server 2008视图中
该数据库是在Windows Server 2003 R2盒子上的Sql Server 2008 Express,v.10.0.1763.0。
的视图被定义为这样:
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对视图,它定购由性别,TEAMYEAR结果,CODE,TEAMID。请注意,它是按TEAMID而不是POINTS按order by clause指定。
但是,如果我复制SQL语句并按照在新查询窗口中的原样运行它,它将按照ORDER BY子句中的指定正确地进行排序。
这很烦人!我可以看到/理解不能在VIEW中保证它,但它至少应该以表值函数工作。哎呀。无论如何感谢您的答案。 :) – eidylon 2009-08-20 14:27:18