Em 01/04/11, Osvaldo Kussama<[email protected]> escreveu:
> Em 31/03/11, Marcelo Silva (IG)<[email protected]> escreveu:
>> Pessoal preciso do seguinte SQL:
>>
>> Tabela
>> CLIENTES
>>   COD_CLI
>>   NOME
>>
>> Tabela Itens
>> VENDAS_ITENS
>>   COD_CLI
>>   COD_PROD
>>   QTD
>>
>> Tabela Balcao
>> VENDAS_BALCAO
>>   COD_CLI
>>   COD_PROD
>>   QTD
>>
>> Preciso trazer todos os clientes que tenha produtos na tabela Itens e
>> Balcao
>> com a seguinte estrutura:
>>
>> COC_CLI    NOME    COD_PROD    QTD_ITENS    QTD_BALCAO
>> 1234          JOSE        XXXX                1                    0
>> 1235          MARIA     YYYY                4                    1
>>
>> E assim por diante
>>
>> Veja que na tabela CLIENTES não tem o campo COD_PROD pra que eu consiga
>> separar pro produtos dessa forma se eu fizer pelo Left Join ele vai somar
>> tudo eu preciso separar a quantidade de produtos na tabela ITENS e BALCAO
>>
>> To quebrando a cabeça aqui... alguém pode dar uma luz
>>
>
>
> Tente fazer um LEFT OUTER JOIN da tabela clientes (USING cod_cli) com
> o resultado do FULL OUTER JOIN entre as tabelas itens e balcao (USING
> cod_cli e cod_pro).
>


Tente assim:

SELECT foo.cod_cli, clientes.nome, foo.cod_pro, foo.qtd_itens, foo.qtd_balcao
FROM clientes LEFT OUTER JOIN
(SELECT itens.cod_cli, itens.cod_pro, coalesce(sum(itens.qtd),0) AS
qtd_itens, coalesce(sum(balcao.qtd),0) AS qtd_balcao FROM vendas_itens
itens FULL OUTER JOIN vendas_balcao balcao USING (cod_cli, cod_pro)
GROUP BY itens.cod_cli, itens.cod_pro) AS foo USING (cod_cli)
ORDER BY 1, 3;

Osvaldo
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a