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
Pergunta
Carlos da Conceição
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
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.