estou tendo com um grande problema! Tenho uma quantidade significativa de relatorios, e pensei uma forma de tentar reduzir esses relatórios em pelos 5x menos deixando a minha query dinamica onde os paramentros não seria obrigatorios.
Segue abaixo o que andei pensando e que não funcionou....
OBS: O banco de dados é o Firebird 2.1
SELECT GP.DATA_PAGAMENTO AS CAMPO1,
--NUMERO DA GUIA
(SELECT GL1.ID_GUIA
FROM GUIA_LANCAMENTO GL1, GUIA_PAGAMENTO GP1
WHERE GL1.ID_GUIA = GP1.ID_GUIA_LANCAMEN
AND GP1.ID_GUIA_RECIBO = GP.ID_GUIA_RECIBO ) AS CAMPO2,
--VALOR
(COALESCE ((GP.CONT_PAT_APOSEN),0)) AS CAMPO4,
(SELECT OS.DESCRICAO
FROM ORGAO_SUBUNIDADE OS, GUIA_PAGAMENTO GP1, GUIA_LANCAMENTO GL1, ORGAO O1
WHERE GP.ID_GUIA_RECIBO = GP1.ID_GUIA_RECIBO
AND GL1.ID_GUIA = GP1.ID_GUIA_LANCAMEN
AND O1.ID_ORGAO = OS.ID_ORGAO
AND GL1.ID_SUBUNID = OS.ID_SUBUNID ) AS CAMPO6,
--TOTAL
(SELECT COALESCE(SUM(GP1.CONT_PAT_APOSEN),0)
FROM GUIA_PAGAMENTO GP1, GUIA_LANCAMENTO GL1
WHERE (GP1.ID_GUIA_LANCAMEN = GL1.ID_GUIA
OR GL1.ID_ORGAO = O.ID_ORGAO
OR GL1.ID_ORGAO = GL1.ID_ORGAO
OR GP.DATA_PAGAMENTO between PARAMETRO3 and PARAMETRO4
AND GL1.ID_SUBUNID = GL.ID_SUBUNID)) AS TOTAL,
--DADOS DO ENTE
EN.NOME AS NOME,
EN.ENDERECO AS ENDERECO,
C.NOMECIDADE AS CIDADE
FROM GUIA_PAGAMENTO GP,
ORGAO O,
GUIA_LANCAMENTO GL,
ENTE EN,
USUARIO U,
CIDADE C,
ORGAO_SUBUNIDADE OS
WHERE (GP.ID_GUIA_LANCAMEN = GL.ID_GUIA
OR O.RAZAO_SOCIAL = PARAMETRO1
OR OS.DESCRICAO = PARAMETRO2
OR GP.DATA_PAGAMENTO BETWEEN PARAMETRO3 AND PARAMETRO4)
Pergunta
Marcelo Braga
Bom dia galera,
estou tendo com um grande problema! Tenho uma quantidade significativa de relatorios, e pensei uma forma de tentar reduzir esses relatórios em pelos 5x menos deixando a minha query dinamica onde os paramentros não seria obrigatorios.
Segue abaixo o que andei pensando e que não funcionou....
OBS: O banco de dados é o Firebird 2.1
SELECT GP.DATA_PAGAMENTO AS CAMPO1,
--NUMERO DA GUIA
(SELECT GL1.ID_GUIA
FROM GUIA_LANCAMENTO GL1, GUIA_PAGAMENTO GP1
WHERE GL1.ID_GUIA = GP1.ID_GUIA_LANCAMEN
AND GP1.ID_GUIA_RECIBO = GP.ID_GUIA_RECIBO ) AS CAMPO2,
--VALOR
(COALESCE ((GP.CONT_PAT_APOSEN),0)) AS CAMPO4,
(SELECT OS.DESCRICAO
FROM ORGAO_SUBUNIDADE OS, GUIA_PAGAMENTO GP1, GUIA_LANCAMENTO GL1, ORGAO O1
WHERE GP.ID_GUIA_RECIBO = GP1.ID_GUIA_RECIBO
AND GL1.ID_GUIA = GP1.ID_GUIA_LANCAMEN
AND O1.ID_ORGAO = OS.ID_ORGAO
AND GL1.ID_SUBUNID = OS.ID_SUBUNID ) AS CAMPO6,
--TOTAL
(SELECT COALESCE(SUM(GP1.CONT_PAT_APOSEN),0)
FROM GUIA_PAGAMENTO GP1, GUIA_LANCAMENTO GL1
WHERE (GP1.ID_GUIA_LANCAMEN = GL1.ID_GUIA
OR GL1.ID_ORGAO = O.ID_ORGAO
OR GL1.ID_ORGAO = GL1.ID_ORGAO
OR GP.DATA_PAGAMENTO between PARAMETRO3 and PARAMETRO4
AND GL1.ID_SUBUNID = GL.ID_SUBUNID)) AS TOTAL,
--DADOS DO ENTE
EN.NOME AS NOME,
EN.ENDERECO AS ENDERECO,
C.NOMECIDADE AS CIDADE
FROM GUIA_PAGAMENTO GP,
ORGAO O,
GUIA_LANCAMENTO GL,
ENTE EN,
USUARIO U,
CIDADE C,
ORGAO_SUBUNIDADE OS
WHERE (GP.ID_GUIA_LANCAMEN = GL.ID_GUIA
OR O.RAZAO_SOCIAL = PARAMETRO1
OR OS.DESCRICAO = PARAMETRO2
OR GP.DATA_PAGAMENTO BETWEEN PARAMETRO3 AND PARAMETRO4)
and GL.ID_USER = U.ID_USUARIO
and EN.ID_ENTE = U.ID_ENTE
and EN.ID_CIDADE = C.ID_CIDADE
and GL.ID_SUBUNID = OS.ID_SUBUNID
and GL.ID_ORGAO = O.ID_ORGAO
and O.ID_ORGAO = OS.ID_ORGAO
and gp.CONT_PAT_APOSEN > 0
ORDER BY CAMPO1 , GP.ID_GUIA_RECIBO
---
Marcelo Braga
(37) 9141-3857
Link para o comentário
Compartilhar em outros sites
0 respostass 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.