Dúvida sobre CONNECT BY

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
  

Mensagemem Sex, 09 Nov 2018 11:18 am

Boas senhores, tenho uma tabela com os seguintes registros:
Coluna item identifica o item, coluna qtde horas identifica nr de horas
item,Qtde_horas
1 ,2
3 ,5

Preciso com uma query gerar linhas conforme nr de horas. Exemplo
item,qtde_horas
1 ,2
1 ,2
3 ,5
3 ,5
3 ,5
3 ,5
3 ,5
Usei um cross join (select rownum from dual connect by level <= qtde_horas)
Mas da erro, pois não consigo passar a variação por registro, ou seja neste caso, primeiro registro level teria que ser 2 e segundo seria 5.
Alguém teria a saída?
Obrigdo e t+
xprata
Localização: São Paulo - SP

Mensagemem Seg, 12 Nov 2018 9:18 am

Olá,

como sua origem de dados pode ter várias linhas, se faz necessário incluir o campo LEVEL e DISTINCT, como abaixo:

Código: Selecionar todos
WITH tabela as (
Select 1 item ,2 horas from dual union all
Select 3 item ,5 horas from dual union all
Select 8 item ,3 horas from dual
)

select DISTINCT t.item , t.horas, LEVEL
  from tabela t
connect by level <= t.horas
order by 1,3;


Com isso você poderá trabalhar em cima desses dados e usar apenas as colunas que desejar.
DanielNN
Localização: Fortaleza - CE

att,

Daniel N.N.



Voltar para PL/SQL

Quem está online

Usuários navegando neste fórum: Majestic-12 [Bot] e 10 visitantes

cron