Em 1 de novembro de 2010 08:42, VisualP Sistemas <[email protected]> escreveu:
> Ola Pessoal,
> No select abaixo tenho o retorno:
>
> SELECT
> cli.nome,
> dep.nome,
> dep.parentesco,
> pla.valor
> FROM (SELECT c.idcli,
> c.nome
> count(*) as qtde_dependente
> FROM cliente c
> INNER JOIN dependente d ON d.idcli = c.idcli
> GROUP BY c.idcli,
> c.nome) AS cli
> INNER JOIN dependente dep ON dep.idcli = cli.idcli
> INNER JOIN plano pla ON pla.qtde_dependente =
> cli.qtde_dependente;
> CLIENTE DEPENDENTE VALOR
> JUCA Juquinha Filho(a) 9,90
> JUCA Mariazinha Filho(a) 9,90
> MILA TULA Milinha Filho(a) 14,90
> MILA TULA Ritinha Filho(a) 14,90
> MILA TULA Fofinha Filho(a) 14,90
> PAULO Paulinho Filho(a) 4,90
>
> Preciso pegar somente primeiro valor, ex:
> JUCA Juquinha Filho(a) 9,90
> JUCA Mariazinha Filho(a)
> MILA TULA Milinha Filho(a) 14,90
> MILA TULA Ritinha Filho(a)
> MILA TULA Fofinha Filho(a)
> PAULO Paulinho Filho(a) 4,90
>
> Isto porque o valor nao é por dependente e sim por cliente.
>
> Alguem tem alguma dica ?
>
Se você precisar listar todos os dependentes uma possível solução é
utilizar a função de agregação array_agg [1], só que neste caso todos
os dependentes estariam em um único campo da saida.
SELECT ...., array_agg(dependente) ..... GROUP BY cliente, valor
Ficaria mais ou menos assim:
JUCA {Juquinha Filho(a),Mariazinha Filho(a)} 9,90
MILA TULA {Milinha Filho(a),Ritinha Filho(a),Fofinha
Filho(a)} 14,90
PAULO {Paulinho Filho(a)} 4,90
Osvaldo
[1] http://www.postgresql.org/docs/current/interactive/functions-aggregate.html
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral