Der er intet uventet ved det resultat, undtagen måske hvis du ikke forstår det.
Hver CTE løses each and every time
det er refereret. Ja, det er derfor, det er muligt for en simpel CTE på en meget transaktionstabel at returnere 4 rækker i én reference og 5 rækker i de næste 2 niveauer ned.
På din prøve er det dog på grund af ORDER BY NEWID(), der giver hver opløsning af den originale CTE en anden row_number()-ing. Troede du, at CTE'er er gemt i hukommelsen og cachelagret? På SQLFiddle-siden, under dine resultater, er der et "se udførelsesplan"-link. Den viser 2 forskellige, separate scanninger af tabellen .