Matheus Bassi Kleer 0 Denunciar post Postado Abril 18, 2018 Boa Tarde procurei mas não achei a resposta no forem então resolvi criar este tópico, tenho pouco conhecimento Oracle então desculpe se o que vou perguntar é algo simples.. Vou dar um exemplo simples: Tenho uma tabela de clientes e cores onde repete o cliente para cada cor selecionada: Nunca terei mais que 3 Cores por cliente.. Clientes | Cores Joao | Azul Joao | Amarelo Joao | Verde Maria | Azul Maria | Laranja Carlos | Verde Queria um resultado da sequinte forma: Cliente | Cor1 | Cor2 | Cor3 | Joao | Amarelo | Azul | Verde | Maria | Azul | Laranja | | Carlos | | | | Tentei fazer uma subQuery Select x.cliente, (select cores from Tabela_A where x.cliente = cliente and ROWNUM = 1) as cor1, (select cores from Tabela_A where x.cliente = cliente and ROWNUM = 2) as cor2, (select cores from Tabela_A where x.cliente = cliente and ROWNUM = 3) as cor3 from Tablea_A x Mas ele não retorna dados quando filtro ROWNUM =2 ou 3 Descobri que ao usar ROWNUM no WHERE ele recebe por default valor 1 então como resolver o meu problema? CREATE TABLE dados(cliente VARCHAR(50), cores VARCHAR(50)); INSERT INTO dados VALUES('João', 'Azul'), ('João', 'Vermelho'), ('João', 'Amarelo'), ('Maria', 'Laranja'), ('Maria', 'Amarelo'), ('Carlos', 'Verde'); Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Abril 18, 2018 Existe uma coluna de sequência na tabela ? Um CASE poderia ser usado. Uma outra solução pode ser usar o LISTAGG. Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Bassi Kleer 0 Denunciar post Postado Abril 24, 2018 Obrigado Resolvi, com 3 querys usando rownum > 3 e < 3 para conseguir pegar o registro! <select * from ( select a.*, rownum rnum from ( YOUR_QUERY_GOES_HERE -- including the order by ) a where rownum <= N_ROWS ) where rnum >= N_ROWS> Compartilhar este post Link para o post Compartilhar em outros sites