ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Sum Firebird [RESOLVIDO]

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
danielms.roda
Novato
Novato


Registrado: Segunda-Feira, 21 de Fevereiro de 2011
Mensagens: 83

MensagemEnviada: Ter Jul 31, 2012 11:42 am    Assunto: Sum Firebird [RESOLVIDO] Responder com Citação

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á Very Happy


Editado pela última vez por danielms.roda em Ter Jul 31, 2012 1:02 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Ter Jul 31, 2012 11:51 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
danielms.roda
Novato
Novato


Registrado: Segunda-Feira, 21 de Fevereiro de 2011
Mensagens: 83

MensagemEnviada: Ter Jul 31, 2012 12:06 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Ter Jul 31, 2012 12:13 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
danielms.roda
Novato
Novato


Registrado: Segunda-Feira, 21 de Fevereiro de 2011
Mensagens: 83

MensagemEnviada: Ter Jul 31, 2012 12:54 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Ter Jul 31, 2012 1:57 pm    Assunto: Responder com Citação

Blz, obrigado pelo retorno.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB