Desmembramento de dados implicando em contador

08/10/2018

3

Bom dia galera, tudo ?

Estou criando um relatório de inadimplência aonde possuo o cliente, os títulos vencidos, um contador de títulos vencidos, um contador de títulos a vencer e um totalizando títulos em aberto. Os contadores funcionam perfeitamente no relatório quando eu não seleciono os títulos vencidos por cliente, ou seja quando ele desmembra os títulos por valores de cada cliente ou por data de vencimento os contadores contam errado. Alguém saberia o que fazer numa situação dessas?

CÓDIGO:
SELECT VENCIDO."CODPARC", RAZAO, TITULO, /*VLRTIT*/AVENCER,VENCIDO, EMABERTO, SUPERVISOR, CODGER
FROM
(SELECT DISTINCT PAR.CODPARC AS "CODPARC", --CODPARC = CÓDIGO DO PARCEIRO
PAR.RAZAOSOCIAL AS "RAZAO", -- RAZÃO SOCIAL DO PARCEIRO
TIT.DESCRTIPTIT AS "TITULO", -- DESCRIÇÃO DO TIPO DE TÍTULO
--FIN.VLRDESDOB "VLRTIT", -- VALOR TOTAL DO TÍTULO NOME DO VENDEDOR CASO EU LIBERE PARA O SELECT OS CONTADORES CONTAM ERRADO POR DESMEMBRAMENTO
--VEN.APELIDO AS VENDEDOR, -- NOME DO VENDEDOR CASO EU LIBERE PARA O SELECT OS CONTADORES CONTAM ERRADO POR DESMEMBRAMENTO
--FIN.DTNEG, -- NOME DO VENDEDOR CASO EU LIBERE PARA O SELECT OS CONTADORES CONTAM ERRADO POR DESMEMBRAMENTO
--FIN.DTVENC, -- NOME DO VENDEDOR CASO EU LIBERE PARA O SELECT OS CONTADORES CONTAM ERRADO POR DESMEMBRAMENTO
GER.APELIDO AS "SUPERVISOR", -- APELIDO DO SUPERVISOR
GER.CODGER AS "CODGER", -- CÓDIGO DO SUPERVISOR
COUNT(PAR.CODPARC) AS "VENCIDO" -- CONTAR POR CÓDIGO DO PARCEIRO OS TÍTULOS VENCIDOS
FROM TGFPAR PAR, TGFFIN FIN, TGFVEN GER, TGFVEN VEN, TGFTIT TIT -- PAR TABELA PARCEIRO FIN TABELA FINANCEIRO GER TABELA GERENTE/ SUP VEN --TABELA VENDEDOR TIT TABELA DE TÍTULOS
WHERE PAR.CODVEND = VEN.CODVEND
AND FIN.CODPARC = PAR.CODPARC
AND FIN.PROVISAO = ''''N'''' --NÃO SER PROVISÃO
AND GER.TIPVEND = ''''S'''' -- VENDEDOR SER SUPERVISOR
AND GER.CODGER = ''''65'''' -- CÓDIGO DO VENDEDOR SEJA 65
AND FIN.RECDESP =''''1'''' -- TRAZER SOMENTE RECEITAS E DESPESAS
AND FIN.CODTIPOPERBAIXA =''''0'''' -- CODIGO DA BAIXA 0
AND FIN.DTVENC <SYSDATE-1 -- VENCIMENTO MENOR QUE O SISTEMA MENOS UM DIA
AND FIN.CODTIPTIT IN TIT.CODTIPTIT
GROUP BY PAR.CODPARC, 
PAR.RAZAOSOCIAL, 
TIT.DESCRTIPTIT,
--FIN.VLRDESDOB, 
--VEN.APELIDO,  
--FIN.DTNEG, 
--FIN.DTVENC, 
GER.APELIDO,
GER.CODGER
ORDER BY PAR.RAZAOSOCIAL)VENCIDO,

(SELECT DISTINCT PAR.CODPARC AS "CODPARC",
COUNT(PAR.CODPARC) AS "AVENCER"
FROM TGFPAR PAR, TGFFIN FIN, TGFVEN GER, TGFVEN VEN
WHERE PAR.CODVEND = VEN.CODVEND
AND FIN.CODPARC = PAR.CODPARC
AND FIN.PROVISAO = ''''N''''
AND GER.TIPVEND = ''''S''''
AND GER.CODGER = ''''65''''
AND FIN.RECDESP =''''1''''
AND FIN.CODTIPOPERBAIXA =''''0''''
AND FIN.DTVENC >= SYSDATE
GROUP BY PAR.CODPARC, PAR.RAZAOSOCIAL
)AVENCER,

(SELECT DISTINCT PAR.CODPARC AS "CODPARC",
COUNT(PAR.CODPARC) AS "EMABERTO"
FROM TGFPAR PAR, TGFFIN FIN, TGFVEN GER, TGFVEN VEN
WHERE PAR.CODVEND = VEN.CODVEND
AND FIN.CODPARC = PAR.CODPARC
AND FIN.PROVISAO = ''''N''''
AND GER.TIPVEND = ''''S''''
AND GER.CODGER = ''''65''''
AND FIN.RECDESP =''''1''''
AND FIN.CODTIPOPERBAIXA =''''0''''
GROUP BY PAR.CODPARC
)EMABERTO

WHERE

VENCIDO."CODPARC"=EMABERTO."CODPARC"
AND VENCIDO."CODPARC"=AVENCER."CODPARC"
AND EMABERTO."CODPARC"=AVENCER."CODPARC"
Responder

Post mais votado

09/10/2018

Oi Maicon, Boa tarde!!!

Vc ja tentou fazer o codigo em separadametne, sem esse tanto de informação?

Só uma tratativa para ter certeza que os contadores estão corretos e so depois ir adicionando as outras informações.

Acredito que assim vc conseguirá detectar onde esta o problema nas contagens.

Me desculpe não poder ajudar melhor, mas meu tempo anda muito curto e nao pude parar para analisar melhor seu codigo.

Atenciosamente,
Responder

Mais Posts

Bom dia Alex! Então, eu fiz isso, separei todas as partes e fiz uma depuração manual, todos os trechos sozinhos me apresentam os resultados que preciso, mas juntos eles conflitam entre sim. Parei para analisar junto com um amigo meu, e acreditamos ser impossível da forma como quero. Então estou implementando ele por via de iReport, e separando as query em Subreports. Só não terminei ainda por que surgiu um problema um pouco mais pra resolver e tive que dar uma pausa nele. Mas logo termino, e finalizo o post quando terminar. Agradeço a atenção, você está sempre respondendo minhas perguntas. Bom final de semana!
Responder

11/10/2018

Alex Lekao

Oi Maicon,

Eu tenho scripts que em tese fação quase isso que vc quer.

Basicamente utilizo outer apply, que eh um outro select que faz extamente o que eu preciso, e so referencia o campo no select principal e tudo funciona.

Se nao me engano, em post anterior seu, seu banco utilizado era Oracle, nao sei se o oracle tbm faz isso, imagino q sim ou deve ter algo similar, recomendo verificar isso.

Talvez vc tera que ter dois ou tres outer apply destes para atingir o resultado desejado.

Cara, mesmo que eu nao souber o codigo, tenho tentado ajudar com ideias para tentar ajudar a elucidar.

Precisando eh so falar.

Atenciosamente,
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar