select * from orgaos
| codigo | codigo_pai | sigla |
|---|---|---|
| 3 | 2 | SAGI |
| 1 | null | PR |
| 4 | 3 | DGI |
| 5 | 3 | DFD |
| 6 | 3 | DM |
| 7 | 3 | DA |
| 2 | 1 | MDS |
| 12 | 1 | MTE |
| 13 | 1 | MRE |
| 11 | 3 | Gab/SAGI |

A consulta abaixo:
with recursive org (codigo, codigo_pai, sigla, deep) as (
select codigo, codigo_pai, sigla,1
from orgaos
where codigo_pai is null
union all
select o1.codigo, o1.codigo_pai, o1.sigla,o2.deep+1
from orgaos o1, org o2
where o2.codigo = o1.codigo_pai
)
select * from org
me gerou
| orgao | orgao_pai | sigla | path | deep |
| 1 | PR | {1} | 1 | |
| 2 | 1 | MDS | {1,2} | 2 |
| 3 | 2 | SAGI | {1,2,3} | 3 |
| 4 | 3 | DGI | {1,2,3,4} | 4 |
| 5 | 3 | DFD | {1,2,3,5} | 4 |
| 6 | 3 | DM | {1,2,3,6} | 4 |
| 7 | 3 | DA | {1,2,3,7} | 4 |
| 11 | 3 | Gab/SAGI | {1,2,3,11} | 4 |
| 12 | 1 | MTE | {1,12} | 2 |
| 13 | 1 | MRE | {1,13} | 2 |
Nenhum comentário:
Postar um comentário