Toto je "by design"
SQL Server (nebo jakýkoli RDBMS) nezaručuje, že výsledky budou vráceny v určitém pořadí, pokud není uvedeno ORDER BY
byla upřesněna doložka. Někteří lidé si myslí, že řádky jsou vždy vráceny v pořadí seskupeného indexu nebo pořadí fyzického disku, pokud není zadáno žádné pořadí podle klauzule. To je však nesprávné, protože existuje mnoho faktorů, které mohou během zpracování dotazu změnit pořadí řádků. Paralelní spojení HASH je dobrým příkladem pro operátor, který mění pořadí řádků.
Pokud zadáte ORDER BY
klauzule, SQL Server seřadí řádky a vrátí je v požadovaném pořadí. Pokud však toto pořadí není deterministické, protože máte duplicitní hodnoty, v každé „skupině hodnot“ je pořadí „náhodné“ ze stejných důvodů, které jsou uvedeny výše.
Jediný způsob, jak zaručit deterministické pořadí, je zahrnout zaručeně jedinečný sloupec nebo skupinu sloupců (například primární klíč) do ORDER BY
doložka.