Desmembramento de dados implicando em contador
08/10/2018
0
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:
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"
Maicon Scapatici
Curtir tópico
+ 0
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,
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,
Alex Lekao
Responder
Mais Posts
11/10/2018
Maicon Scapatici
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,
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
Clique aqui para fazer login e interagir na Comunidade :)