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+
Dúvida sobre CONNECT BY
-
- Moderador
- Mensagens: 641
- Registrado em: Seg, 03 Set 2007 3:26 pm
- Localização: Fortaleza - CE
att,
Daniel N.N.
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:
Com isso você poderá trabalhar em cima desses dados e usar apenas as colunas que desejar.
como sua origem de dados pode ter várias linhas, se faz necessário incluir o campo LEVEL e DISTINCT, como abaixo:
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.
- fbifabio
- 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
www.fabioprado.net
Para aprender mais sobre queries hierárquicas sugiro a leitura do artigo https://www.fabioprado.net/2011/06/cons ... eries.html.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 18 visitantes