Legal a solução mas se existir muitas cores vai ser necessário escrever um gerador desse script, senão fica inviável. Além disso, para criar este gerador é necessário capturar todas as cores possíveis, o que agrega mais complexidade para este cenário da solução.
Em 28 de julho de 2015 13:09, Matheus de Oliveira <[email protected] > escreveu: > > 2015-07-27 20:25 GMT-03:00 Stclara <[email protected]>: > >> Gostaria de saber se alguém já recebeu um pedido destes e como conseguiu >> resolver: >> - Uma tabela com os campos nome e cores; >> - Ex: >> nome cores >> carlos azul, vermelho, amarelo >> josé branco, cinza, azul >> antonio amarelo, azul, roxo >> >> - Agora preciso montar uma consulta que me retorne: >> >> azul vermelho amarelo branco cinza roxo >> carlos carlos carlos josé josé antonio >> josé antonio >> antonio >> > > Tem várias formas, isso é semelhante com conceito de PIVOT ou crosstab. O > problema maior no seu caso é que não tem uma grupo claro. Se você estiver > usando versão 9.4 ou superior, então eu penso na seguinte solução (não sei > dizer se a melhor): > > CREATE TEMP TABLE foo(nome text, cor text); > > INSERT INTO foo VALUES('carlos', 'azul'),('carlos', > 'vermelho'),('carlos', 'amarelo'),('josé', > 'branco'),('josé','cinza'),('josé','azul'),('antonio','amarelo'),('antonio','azul'),('antonio','roxo'); > > WITH nomes AS ( > SELECT > array_agg(nome) FILTER(WHERE cor = 'azul') AS azul, > array_agg(nome) FILTER(WHERE cor = 'vermelho') AS vermelho > FROM foo > ) > SELECT u.* FROM nomes n, unnest(n.azul, n.vermelho) AS u(azul, > vermelho); > > Essa consulta usa duas novidades da versão 9.4, primeiro usa o FILTER para > agregar em arrays os nomes que estão em cada cor, depois usa o unnest com > dois parâmetros (unnest com mais de um parâmetro é da 9.4) que já traz o > resultado exatamente como você espera. > > Fiz somente para vermelho e azul, mas é só expandir para as demais cores. > > Atenciosamente, > -- > Matheus de Oliveira > > > > _______________________________________________ > pgbr-geral mailing list > [email protected] > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > -- Tarcísio Martins Ferreira Analista Desenvolvedor de Sistemas Bacharel em Ciência da Computação, FACOM <http://www.portal.facom.ufu.br/>/UFU <http://www.ufu.br> <http://www.ufu.br> Mestrando em Engenharia de Software, FACOM <http://www.facom.ufu.br/posgrad/>/UFU <http://www.ufu.br>
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
