Ir para conteúdo
  • Cadastre-se

dev botao

SQL para vereficar mensalidades


Ver Solução Respondido por EMBarbosa,
  • Este tópico foi criado há 1014 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

olá, alguem ja fez algo parecido , eu uso para vereficar quais mensalidades dos contratos estao abanando para o cliente gerar novamente (um plano)

essa que eu uso atualmente para vereficar 1 mil contratos leva 18 segundos , se puderem me dar uma dica para otimizar 


 

  SELECT C.NUCONTRATO,A.NOMCLIE,D.NOMPLANO, C.DATA1PAG,( SELECT  MAX(E.DATVENC) FROM  TAB_CONTA_REC_PAG E  WHERE E.ID_INTERACAO IS NULL AND  E.CODVEND IS  NULL AND E.CODCONT = C.CODCONT    GROUP BY CODCONT) ULTIMA_PARC,
( SELECT  COUNT(E.SEQUEN_PARC) FROM  TAB_CONTA_REC_PAG E  WHERE E.ID_INTERACAO IS NULL AND  E.CODVEND IS  NULL AND E.CODCONT = C.CODCONT    GROUP BY CODCONT) NUMERO_PARC,
( SELECT (COALESCE(COUNT(E.ID_REC_PAG),0)) FROM  TAB_CONTA_REC_PAG E  WHERE E.ID_INTERACAO IS NULL AND  E.CODVEND IS  NULL AND E.CODCONT = C.CODCONT AND E.STATUS='A'    GROUP BY CODCONT) QTD_PARC_FIM, C.ID_SECAO, C.ID_SECAO2, C.ID_SECAO3,

EXTRACT( DAY FROM C.DATA1PAG ) AS DIA , F.NOMFUNC , F.CODFUNC , D.CODPLANO, C.VLRTOTAL, C.QTDPAR ,C.CODCONT, C.CODCLIE,C.TIPO_COBRANCA  ,
CASE C.TIPO_COBRANCA
            WHEN 'C' THEN 'CARNÊ '
            WHEN 'B' THEN 'BOLETO'
        END NOME_TIPO_COBRANCA
FROM TAB_CONT C

LEFT JOIN TAB_CLIE A ON (A.CODCLIE= C.CODCLIE)
LEFT JOIN TAB_PLANO D ON (D.CODPLANO= C.CODPLAN)
LEFT JOIN TAB_SECAO Y ON (Y.ID_SECAO = C.ID_SECAO)
LEFT JOIN TAB_SECAO W ON (W.ID_SECAO =C.ID_SECAO2)
LEFT JOIN TAB_FUNC F ON (F.CODFUNC= C.ID_COBRADOR)

                                            
WHERE


C.STATUS='A' AND

((  SELECT (COALESCE(COUNT(E.ID_REC_PAG),0)) FROM  TAB_CONTA_REC_PAG E  WHERE E.ID_INTERACAO IS NULL AND  E.CODVEND IS  NULL AND E.codcont = C.codcont  AND E.STATUS='A'  GROUP BY codcont  )<=:QTD_PARC OR
C.CODCONT NOT IN   (  SELECT E.CODCONT FROM  TAB_CONTA_REC_PAG E  WHERE E.ID_INTERACAO IS NULL AND E.CODVEND IS NULL AND E.CODCONT = C.CODCONT  AND E.STATUS='A'  ))

ORDER BY
C.NUCONTRATO

 

Link para o comentário
Compartilhar em outros sites

  • Consultores
  • Solution

Remova esses muitos selects que existem aí.

Use inner joins ao invés de left joins.

Crie índices nas tabelas.

 

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1014 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.