PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Eu quero retornar nova coluna usando recursiva em SQL?


Este é um exemplo canônico de COM RECURSIVE

Tente isto:
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

Conforme descrito na documentação:

A COM RECURSCIVA é sempre composto por
  1. Um termo não recursivo
  2. UNIÃO ou UNION ALL
  3. Um termo recursivo, o único que pode se referir à saída da consulta

A recusa termina quando a iteração anterior não tem saída.