 |
ActiveDelphi .: O site do programador Delphi! :.
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
rogerioclaro2 Experiente

Registrado: Quinta-Feira, 17 de Outubro de 2013 Mensagens: 404
|
Enviada: Sex Jul 28, 2017 3:45 pm Assunto: Select Firebird não soma |
|
|
Pessoal, boa tarde!
Fiz o seguinte select com as informações que preciso
| Código: |
select distinct
rr.codigo as codigo,
rr.movsaida as movsaida,
rr.numero as codParcela,
rr.parcela,
rr.cliente as clientecodigo,
rr.indice as clientes,
rr.data as dtPagamento,
rr.vencimento as vencimento,
sum(rr.valor) as valorpago
from creditocliente rr
where rr.cancelado = 0 and rr.numero <> 0
and rr.indice = 3854
and rr.movsaida = 32018
group by
rr.codigo,
rr.movsaida,
rr.numero,
rr.parcela,
rr.cliente,
rr.indice,
rr.data,
rr.vencimento
order by dtpagamento
|
ele retorna sem somar os valores... ja tentei .. alguem pode dar uma mão?
Obrigado
ps fiz o filtro de um so cliente, mas preciso de todos*** |
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Sex Jul 28, 2017 3:59 pm Assunto: |
|
|
Boa tarde,
Você precisa a princípio remover os campos Codigo e Data da query, pois eles possuem valores diferentes entre os registros e estão impedindo o agrupamento dos mesmos.
Espero que ajude
Editado pela última vez por imex em Seg Dez 04, 2023 11:21 am, num total de 1 vez |
|
| Voltar ao Topo |
|
 |
rogerioclaro2 Experiente

Registrado: Quinta-Feira, 17 de Outubro de 2013 Mensagens: 404
|
Enviada: Sex Jul 28, 2017 4:25 pm Assunto: |
|
|
| imex escreveu: | Boa tarde,
Você precisa a princípio remover os campos Codigo e Data da query, pois eles possuem valores diferentes entre os registros e estão impedindo o agrupamento dos mesmos.
Espero que ajude
|
obrigado imex, ja havia feito isso ele soma, porém preciso dos campos... será que coloca o max(codigo) e max(data) sem agrupar ele retorna??? vou fazer o teste imex. obrigado |
|
| Voltar ao Topo |
|
 |
rogerioclaro2 Experiente

Registrado: Quinta-Feira, 17 de Outubro de 2013 Mensagens: 404
|
Enviada: Seg Jul 31, 2017 6:01 pm Assunto: |
|
|
Pessoal, boa tarde!
Fiz o teste conforme me deram a ideia, funcionou em vários casos porem em alguns não.
Fiz assim
| Código: |
select distinct
-----max(rr.codigo) as codigo,
rr.movsaida as movsaida,
rr.numero as codParcela,
rr.parcela,
rr.cliente as clientecodigo,
rr.indice as clientes,
max(rr.data) as dtPagamento,
rr.vencimento as vencimento,
sum(rr.valor) as valorpago
from creditocliente rr
where rr.cancelado = 0 and rr.numero <> 0
and rr.indice = 2033
--and rr.data = '07.07.2017'
group by
------rr.codigo,
rr.movsaida,
rr.numero,
rr.parcela,
rr.cliente,
rr.indice,
-------rr.data,
rr.vencimento
order by dtpagamento
|
ele ele retornou assim
ai filtrando o dtpagamento
dessa forma
| Código: |
select distinct
-----max(rr.codigo) as codigo,
rr.movsaida as movsaida,
rr.numero as codParcela,
rr.parcela,
rr.cliente as clientecodigo,
rr.indice as clientes,
max(rr.data) as dtPagamento,
rr.vencimento as vencimento,
sum(rr.valor) as valorpago
from creditocliente rr
where rr.cancelado = 0 and rr.numero <> 0
and rr.indice = 2033
and rr.data = '07.07.2017'
group by
------rr.codigo,
rr.movsaida,
rr.numero,
rr.parcela,
rr.cliente,
rr.indice,
-------rr.data,
rr.vencimento
order by dtpagamento
|
Retorna certo, somando todos os registros
varios registros estão ok cerca de 70% os demais estão assim... alguem pode dar um help ai?
Valeuu |
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Seg Jul 31, 2017 8:49 pm Assunto: |
|
|
Qual versão do Firebird você está utilizando?
Você precisa de quais campos no resultado? Você pode postar um exemplo de como gostaria que ficasse o resultado?
Como disse no início, para que os registros sejam agrupados é necessário, a princípio, que os campos que não estão dentro de funções de agregação (ex: min, max, sum, avg, etc) possuam o mesmo valor. Isso após o Select. No Where pode ser utilizado qualquer campo.
Pelo que vi no último print que você postou os campos que possuem o mesmo valor são o rr.cliente, rr.indice e talvez o rr.data. |
|
| Voltar ao Topo |
|
 |
rogerioclaro2 Experiente

Registrado: Quinta-Feira, 17 de Outubro de 2013 Mensagens: 404
|
Enviada: Ter Ago 01, 2017 10:31 am Assunto: |
|
|
| imex escreveu: | Qual versão do Firebird você está utilizando?
Você precisa de quais campos no resultado? Você pode postar um exemplo de como gostaria que ficasse o resultado?
Como disse no início, para que os registros sejam agrupados é necessário, a princípio, que os campos que não estão dentro de funções de agregação (ex: min, max, sum, avg, etc) possuam o mesmo valor. Isso após o Select. No Where pode ser utilizado qualquer campo.
Pelo que vi no último print que você postou os campos que possuem o mesmo valor são o rr.cliente, rr.indice e talvez o rr.data. |
ola imex, gostaria que o resultado ficasse igual a segunda imagem, so apareceu o valor quando filtro por dtpagamento, se eu nao filtra ele retorna a igual o da primeira imagem.. |
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Ter Ago 01, 2017 10:58 am Assunto: |
|
|
Não consegui entender... Você pode postar o resultado da query abaixo com a tabela com os mesmos registros que existiam quando você executou a segunda query? Ou então os 2 resultados novamente?
| Código: | select
rr.movsaida as movsaida,
rr.numero as codParcela,
rr.parcela,
rr.cliente as clientecodigo,
rr.indice as clientes,
rr.data as dtPagamento,
rr.vencimento as vencimento,
rr.valor as valorpago
from creditocliente rr
where rr.cancelado = 0 and rr.numero <> 0
and rr.indice = 2033
and rr.data = '07.07.2017' |
Qual versão do Firebird você está utilizando? |
|
| Voltar ao Topo |
|
 |
rogerioclaro2 Experiente

Registrado: Quinta-Feira, 17 de Outubro de 2013 Mensagens: 404
|
Enviada: Ter Ago 01, 2017 1:27 pm Assunto: |
|
|
| imex escreveu: | Não consegui entender... Você pode postar o resultado da query abaixo com a tabela com os mesmos registros que existiam quando você executou a segunda query? Ou então os 2 resultados novamente?
| Código: | select
rr.movsaida as movsaida,
rr.numero as codParcela,
rr.parcela,
rr.cliente as clientecodigo,
rr.indice as clientes,
rr.data as dtPagamento,
rr.vencimento as vencimento,
rr.valor as valorpago
from creditocliente rr
where rr.cancelado = 0 and rr.numero <> 0
and rr.indice = 2033
and rr.data = '07.07.2017' |
Qual versão do Firebird você está utilizando? |
Ola imex, bom dia!
Esse select fica idêntico a segunda imagem, talvez ficou meio confuso, pelo sum, ele precisa somar os valores quando a parcela, for igual, como no exemplo abaixo mesmo sendo dtpagamento diferentes previsaria somar, pois são as mesmas parcelas(ex de outro cliente)
sem o comando sum
Com o sum Teria que ficar assim, com o primeiro comando que eu fiz. deu certo em 70% dos registros, mas os outros 30% não.
Acho que deu pra passar rsss
Se alguem puder ajudar
Firebird 2.7.5 |
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Ter Ago 01, 2017 2:43 pm Assunto: |
|
|
Pelo que entendi acredito que a query está funcionando conforme você espera para esse caso que você postou acima.
Gostaria de ver o resultado daquela query que postei para um desses casos que você não conseguiu obter o resultado esperado para ver se consigo identificar o que está acontecendo. E de preferência colocando também como você gostaria que ficasse o respectivo resultado. |
|
| Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|