Na tomto výsledku není nic neočekávaného, možná kromě případů, kdy mu nerozumíte.
Každý CTE je vyřešen each and every time
je odkazováno. Ano, to je důvod, proč je možné, aby jednoduchý CTE ve vysoce transakční tabulce vrátil 4 řádky v jedné referenci a 5 řádků v dalších 2 úrovních níže.
Ve vašem vzorku je to však kvůli ORDER BY NEWID(), které dává každému rozlišení původního CTE různé row_number()-ing. Mysleli jste si, že CTE jsou uloženy v paměti a mezipaměti? Na webu SQLFiddle pod vašimi výsledky je odkaz „zobrazit plán provádění“. Zobrazuje 2 různé samostatné skeny tabulky .