Rekursives SQL ist ein sehr mächtiges Werkzeug, allerdings nicht einfach zu verstehen.
Die grundlegende Syntax lautet:
WITH common_table (spaltenliste) AS
( Ursprungsselect
UNION ALL
Rekursionsselect )
SELECT spaltenliste FROM common_table WHERE ...
Nähere Infos finden sich hier: