Ir para conteúdo
Fórum Script Brasil
  • 0

Sumarizando e filtrando por data


Carlos da Conceição

Pergunta

Srs.(as.) boa tarde:

Estou tentando realizar uma consulta em uma tabela de contas a receber onde eu tenho um campo de valor e um de data de vencimento.

A dificuldade está aparecendo quando eu estou tentando realizar uma consulta e sumarizar em separado o que já venceu e o que está para vencer. Da forma que estou fazendo peguei um cliente que tinha 1 registro vencido e 1 a vencer com o mesmo valor e com isto deu confusão e os valores acabam sendo somados sem repeitar o filtro de data.

Será que alguém poderia me auxiliar ?

Segue script abaixo:

SELECT

Clientes.NomeRazaoSocial,

TabFormasPagamento.Codigo,

(SELECT cfgempresa.Nome FROM cfgempresa) AS nome,

ContasReceberDetalhes.FlagMovimento,

SUM(ContasReceberDetalhes.Valor) AS Valor,

SUM(ISNULL(CDAVencidos.Vencidos, 0)) AS Vencidos,

SUM(ISNULL(CDAVencer.AVencer, 0)) AS AVencer

FROM

ContasReceberDetalhes LEFT OUTER JOIN

Clientes ON Clientes.idNumerador = ContasReceberDetalhes.idCliente

LEFT OUTER JOIN

TabFormasPagamento ON TabFormasPagamento.idNumerador =

ContasReceberDetalhes.idForma LEFT OUTER JOIN

(SELECT DISTINCT

Clientes.NomeRazaoSocial, ContasReceberDetalhes.Valor AS Vencidos

FROM

Clientes INNER JOIN

ContasReceberDetalhes ON Clientes.idNumerador =

ContasReceberDetalhes.idCliente INNER JOIN

TabFormasPagamento ON TabFormasPagamento.idNumerador =

ContasReceberDetalhes.idForma

WHERE

TabFormasPagamento.Codigo = '200' AND ContasReceberDetalhes.FlagMovimento

IS NULL AND ContasReceberDetalhes.DataVencimento < GETDATE()) AS

CDAVencidos ON CDAVencidos.NomeRazaoSocial = Clientes.NomeRazaoSocial AND

ContasReceberDetalhes.Valor = CDAVencidos.Vencidos LEFT OUTER JOIN

(SELECT DISTINCT

Clientes.NomeRazaoSocial, ContasReceberDetalhes.Valor AS AVencer

FROM

Clientes INNER JOIN

ContasReceberDetalhes ON Clientes.idNumerador =

ContasReceberDetalhes.idCliente INNER JOIN

TabFormasPagamento ON TabFormasPagamento.idNumerador =

ContasReceberDetalhes.idForma

WHERE

TabFormasPagamento.Codigo = '200' AND ContasReceberDetalhes.FlagMovimento

IS NULL AND ContasReceberDetalhes.DataVencimento >= GETDATE()) AS

CDAVencer ON CDAVencer.NomeRazaoSocial = Clientes.NomeRazaoSocial AND

ContasReceberDetalhes.Valor = CDAVencer.AVencer

GROUP BY

Clientes.NomeRazaoSocial, TabFormasPagamento.Codigo,

ContasReceberDetalhes.FlagMovimento

HAVING

TabFormasPagamento.Codigo = '200' AND ContasReceberDetalhes.FlagMovimento IS

NULL

ORDER BY

Clientes.NomeRazaoSocial

Desde já agradeço

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Bom dia Carlos,

Sempre quando utilizo as funções de soma, gosto de fazer os scripts passo a passo, ao invés de tentar fazer tudo em apenas 1 script.

Dei uma olhada por alto em seu script. O que me chamou a atenção é que está querendo utilizar o filtro por Cliente e Data, mas no seu script a ordenação está apenas por Cliente.

Caso não seja isso o desejável, poderá ordernar por vencidos e a vender, e após identificar o resultado correto, acrescentar o filtro por data.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...