Un CTE (non ricorsivo) non utilizza i cursori. È un approccio basato sugli insiemi. Questa è la grande differenza rispetto all'utilizzo dei cursori. Ma questo vale per il non utilizzo dei cursori in generale.
I cursori dovrebbero essere evitati ove assolutamente possibile (come sono sicuro tutti sappiamo).
Un CTE non è necessariamente migliore dell'utilizzo di una tabella derivata, ma porta a un codice TSQL più comprensibile. Un CTE è in realtà solo una scorciatoia per una query o una sottoquery; qualcosa di simile a una vista temporanea.
La situazione in cui i CTE potrebbero non essere l'approccio migliore è quando l'ottimizzatore del piano di query ottiene stime di riga imprecise per il CTE.
Domanda correlata:quali sono i vantaggi/svantaggi dell'utilizzo di un CTE?