Mamy widok w naszej bazie danych, która zawiera ORDER BY. Teraz zdaję sobie sprawę, że poglądy generalnie nie porządkują, ponieważ różni ludzie mogą używać go do różnych rzeczy i chcą, żeby było inaczej uporządkowane. Ten widok jest jednak używany w przypadku użycia określonego przypadku, który wymaga określonej kolejności. (Jest to ranking drużynowy w lidze piłkarskiej.)ORDER BY w Sql Server 2008 view
Baza danych to Sql Server 2008 Express, wersja 10.0.1763.0 w systemie Windows Server 2003 R2.
Widok jest zdefiniowany jako takie:
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
Zwraca:
GENDER, TEAMYEAR, CODE, TEAMID, CLUB, NAME,
WINS, LOSSES, TIES, GOALS_FOR, GOALS_AGAINST,
DIFFERENTIAL, POINTS, FORFEITS, RANKING
Teraz, kiedy uruchomić SELECT przeciwko widzenia, porządkuje wyniki według płeć, TEAMYEAR , KOD, TEAMID. Zauważ, że jest zamawiane przez TEAMID zamiast PUNKTY zgodnie z klauzulą order by.
Jeśli jednak skopiuję instrukcję SQL i uruchomię ją dokładnie tak, jak w nowym oknie zapytania, zamówienie zostanie wykonane zgodnie z klauzulą ORDER BY.
To denerwujące! W pewnym sensie widzę/rozumiem, że nie gwarantuję tego w WIDOKU, ale ... powinno to przynajmniej działać w funkcji wycenianej w tabeli. GRRR. Dzięki za odpowiedź. :) – eidylon