Nie ma nic nieoczekiwanego w tym wyniku, chyba że go nie rozumiesz.
Każde CTE jest rozwiązywane each and every time
jest przywoływany. Tak, dlatego proste CTE na wysoce transakcyjnej tabeli może zwrócić 4 wiersze w jednym odwołaniu i 5 wierszy na kolejnych 2 poziomach w dół.
Jednak w twoim przykładzie jest to spowodowane funkcją ORDER BY NEWID(), która nadaje każdej rozdzielczości oryginalnego CTE inny numer_wiersza(). Czy uważasz, że CTE są przechowywane w pamięci i buforowane? W witrynie SQLFiddle, pod Twoimi wynikami, znajduje się link „wyświetl plan wykonania”. Pokazuje 2 odrębne, oddzielne skany tabeli .