Dette er "by design"
SQL Server (eller nogen RDBMS) garanterer ikke, at resultater returneres i en bestemt rækkefølge, hvis ingen ORDER BY
klausul blev specificeret. Nogle mennesker tror, at rækkerne altid returneres i klynget indeksrækkefølge eller fysisk diskrækkefølge, hvis der ikke er angivet nogen orden efter klausul. Det er dog forkert, da der er mange faktorer, der kan ændre rækkefølgen under forespørgselsbehandlingen. En parallel HASH join er et godt eksempel for en operator, der ændrer rækkefølgen.
Hvis du angiver en ORDER BY
klausul, vil SQL Server sortere rækkerne og returnere dem i den ønskede rækkefølge. Men hvis denne rækkefølge ikke er deterministisk, fordi du har duplikerede værdier, er rækkefølgen inden for hver "værdigruppe" "tilfældig" af de samme årsager som nævnt ovenfor.
Den eneste måde at garantere en deterministisk rækkefølge på er at inkludere en garanteret unik kolonne eller kolonnegruppe (for eksempel den primære nøgle) i ORDER BY
klausul.