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
Responder
xprata
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 93
Registrado em: Ter, 06 Abr 2010 11:31 am
Localização: São Paulo - SP

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+
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Olá,

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

Selecionar tudo

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.
Avatar do usuário
fbifabio
Moderador
Moderador
Mensagens: 199
Registrado em: Ter, 22 Fev 2011 1:51 pm
Localização: São Paulo - SP
Contato:
Fábio Prado
www.fabioprado.net

Para aprender mais sobre queries hierárquicas sugiro a leitura do artigo https://www.fabioprado.net/2011/06/cons ... eries.html.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 13 visitantes