PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Je veux retourner une nouvelle colonne en utilisant Recursive in SQL ?

Ceci est un exemple canonique de AVEC RÉCURSIF

Essayez ceci :

with recursive subordinates as
  (select 
      employeid, 
      e.managerid, 
      e.managerid as leader 
   from employes e 
   where e.managerid in(select * from leaders) -- non recursive term
   union 
   select 
      e.employeid, 
      e.managerid, 
      a.managerid as leader 
    from employes e 
          join subordinates a on a.employeid = e.managerid -- recursive term
) select * from subordinates

Comme décrit dans la documentation :

A AVEC RÉCURSCIF est toujours composé de

  1. Un terme non récursif
  2. UNION ou UNION TOUS
  3. Un terme récursif, le seul qui peut faire référence à la sortie de la requête

La récusion se termine lorsque l'itération précédente n'a pas de sortie.