 |
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
danielms.roda Novato

Registrado: Segunda-Feira, 21 de Fevereiro de 2011 Mensagens: 83
|
Enviada: Ter Jul 31, 2012 11:42 am Assunto: Sum Firebird [RESOLVIDO] |
|
|
Bom dia galera!
Estou com uma dúvida aqui, preciso fazer um comparativo de dois valores, agrupando por cliente. o meu select está assim:
Código: | select cc.nome, cc.cpf_cnpj,
(select sum(vlr_total) from pedidos where cliente = cc.codigo and data between :dataini and :datafim and tipo = 'ORÇAMENTO') as Orcamento,
(select sum(vlr_total) from pedidos where cliente = cc.codigo and data between :dataini and :datafim and tipo = 'PEDIDO') as Pedido
from cad_clientes cc
where cc.tipo = 'CLIENTE' |
porém, ele me retorna valores nulos, eu preciso filtrar isso, qndo o valor do Orcamento e do Pedido forem nulos nao mostrar o campo com o cliente.
Alguem pode me ajudar? Agradeço desde já 
Editado pela última vez por danielms.roda em Ter Jul 31, 2012 1:02 pm, num total de 1 vez |
|
Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Ter Jul 31, 2012 11:51 am Assunto: |
|
|
Bom dia,
Experimente desta forma:
Código: | select
cc.nome,
cc.cpf_cnpj,
sum(case when p.tipo = 'ORÇAMENTO' then vlr_total else 0 end) as Orcamento,
sum(case when p.tipo = 'PEDIDO' then vlr_total else 0 end) as Pedido
from cad_clientes cc
join pedidos p on p.cliente = cc.codigo
where (cc.tipo = 'CLIENTE') and
(p.data between :dataini and :datafim)
group by
cc.nome,
cc.cpf_cnpj |
Espero que ajude.
Editado pela última vez por imex em Ter Out 03, 2023 3:42 pm, num total de 1 vez |
|
Voltar ao Topo |
|
 |
danielms.roda Novato

Registrado: Segunda-Feira, 21 de Fevereiro de 2011 Mensagens: 83
|
Enviada: Ter Jul 31, 2012 12:06 pm Assunto: |
|
|
imex escreveu: | Bom dia,
Experimente desta forma:
Código: | select
cc.nome,
cc.cpf_cnpj,
sum(case when p.tipo = 'ORÇAMENTO' then vlr_total else 0 end) as Orcamento,
sum(case when p.tipo = 'PEDIDO' then vlr_total else 0 end) as Pedido
from cad_clientes cc
join pedidos p on p.cliente = cc.codigo
where (cc.tipo = 'CLIENTE') and
(p.data between :dataini and :datafim)
group by
cc.nome,
cc.cpf_cnpj |
Espero que ajude. |
Imex, ajudou, mas mesmo assim qndo os valores orçamento e pedido são 0, ele mostra a linha, eu precisaria que não mostrasse, exemplo:
Nome, Orcamento, Pedido
Cliente1, 0, 4000
Cliente2, 0, 0
Cliente3, 2000, 0
ficasse assim
Cliente1, 0, 4000
Cliente3, 2000, 0 |
|
Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Ter Jul 31, 2012 12:13 pm Assunto: |
|
|
Experimente adicionar no final:
Código: | having
sum(case when p.tipo in ('ORÇAMENTO', 'PEDIDO') then 1 else 0 end) > 0 |
Espero que ajude. |
|
Voltar ao Topo |
|
 |
danielms.roda Novato

Registrado: Segunda-Feira, 21 de Fevereiro de 2011 Mensagens: 83
|
Enviada: Ter Jul 31, 2012 12:54 pm Assunto: |
|
|
imex escreveu: | Experimente adicionar no final:
Código: | having
sum(case when p.tipo in ('ORÇAMENTO', 'PEDIDO') then 1 else 0 end) > 0 |
Espero que ajude. |
Muito obrigado imex, resolveu meu problema, valeu amigo! |
|
Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Ter Jul 31, 2012 1:57 pm Assunto: |
|
|
Blz, obrigado pelo retorno. |
|
Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|