sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Quiero devolver una nueva columna usando Recursive en SQL?

Este es un ejemplo canónico de CON RECURSIVO

Prueba esto:

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

Como se describe en la documentación:

A CON RECURSCIVO siempre está compuesto por

  1. Un término no recursivo
  2. UNIÓN o UNIR TODOS
  3. Un término recursivo, el único que puede referirse al resultado de la consulta

La recusión finaliza cuando la iteración anterior no tiene salida.