The key thing that is important is that a recursive CTE allows for the retrieval of data from graph-like table schemas.<p>I&#x27;d sort of forgotten about this feature of SQL! But common table expressions and window functions actually keep the expressiveness of SQL and fill in gaps that just straight subselects, derived tables and joins alone can&#x27;t always achieve.<p>Take for instance the rolling update he highlights. Before SQL Server got windowing functions (and boy, were Microsoft ever slow in implementing <i>those</i> in SQL Server!) the way to do a reasonable fast query (i.e. Not use cursors) was one a guy called Jeff Moden came up with in 2012:<p><a href="http:&#x2F;&#x2F;www.sqlservercentral.com&#x2F;articles&#x2F;T-SQL&#x2F;68467&#x2F;" rel="nofollow">http:&#x2F;&#x2F;www.sqlservercentral.com&#x2F;articles&#x2F;T-SQL&#x2F;68467&#x2F;</a><p>It relied on undocumented behaviour he observed in cluster indexes - so long as he could keep the order of rows returned by the database, he figured out a very fast method of doing a running total.<p>Obviously it was a hack and couldn&#x27;t really be used, but it shows what folks can do when their favourite vendor doesn&#x27;t supply critical features needed to process data in their favourite tool quickly :-)