SELECT 0,
SYSDATE,
SUM(AXG2000.Cob_Leasing(CTR_COD_NUM,CTR_COD_EXT,CTR_PERFIL_NUM,SYSDATE,'P')) AS VALOR,
SUBSTR(TO_CHAR((SELECT MAX(SUBSTR(TO_CHAR(T2.CTR_PERFIL_NUM,'00'),2,2))
FROM TAB_CTR_PERFIL T2
WHERE T2.PAR_EMP_COD = T1.PAR_EMP_COD
AND T2.PAR_PRD_COD = T1.PAR_PRD_COD
AND T2.CTR_COD_NUM = T1.CTR_COD_NUM
AND T2.CTR_COD_EXT = T1.CTR_COD_EXT),'00'),2,2) AS PRAZO
FROM TAB_CTR_PERFIL T1
WHERE PAR_EMP_COD = 2
AND PAR_PRD_COD = 11
AND CTR_COD_NUM = LPAD(SUBSTR(920916,1,LENGTH(920916)-1),18,'0')
AND CTR_COD_EXT = AXG2000.FN_COB_LEA_TRAZ_EXTENSAO(' ')
AND CTR_PERFIL_NUM >0
AND CTR_PERFIL_NUM <99
AND CTR_PERFIL_TP_VRG NOT IN ('A','F')
AND AXG2000.Cob_Leasing(CTR_COD_NUM,CTR_COD_EXT,CTR_PERFIL_NUM,SYSDATE,'P') > ((CTR_PERFIL_VALOR_PRCL_ATUAL+CTR_PERFIL_VALOR_VRG_ATUAL)*0.70)
AND (CTR_PERFIL_STA_SISTEMA = 'S'
AND CTR_PERFIL_DT_VENC < (SELECT MAX(CTR_BAIXAS_DT_PAGTO) FROM TAB_CTR_BAIXAS T2
WHERE T2.CTR_BAIXAS_DT_PAGTO = (SELECT MAX(T5.CTR_BAIXAS_DT_PAGTO)
FROM TAB_CTR_BAIXAS T5
WHERE T5.PAR_EMP_COD = T2.PAR_EMP_COD
AND T5.PAR_PRD_COD = T2.PAR_PRD_COD
AND T5.CTR_COD_NUM = T2.CTR_COD_NUM
AND T5.CTR_COD_EXT = T2.CTR_COD_EXT
AND T5.CTR_PERFIL_NUM = T2.CTR_PERFIL_NUM)
AND T2.PAR_EMP_COD = T1.PAR_EMP_COD
AND T2.PAR_PRD_COD = T1.PAR_PRD_COD
AND T2.CTR_COD_NUM = T1.CTR_COD_NUM
AND T2.CTR_COD_EXT = T1.CTR_COD_EXT
AND T2.CTR_PERFIL_NUM = T1.CTR_PERFIL_NUM
AND T2.CTR_BAIXAS_DT_ESTORNO IS NULL
AND (T2.CTR_BAIXAS_DEVIDO_VAL_PRCL <> 0 OR
T2.CTR_BAIXAS_DEVIDO_VAL_VRG <> 0 OR
T2.CTR_BAIXAS_DEVIDO_VAL_MULTA <> 0 OR
T2.CTR_BAIXAS_DEVIDO_VAL_CP_DIA <> 0))
AND (SELECT SUM(T3.CTR_BAIXAS_VALOR_RESID_ABSORV)
FROM TAB_CTR_BAIXAS T3
WHERE T3.PAR_EMP_COD = T1.PAR_EMP_COD
AND T3.PAR_PRD_COD = T1.PAR_PRD_COD
AND T3.CTR_COD_NUM = T1.CTR_COD_NUM
AND T3.CTR_COD_EXT = T1.CTR_COD_EXT
AND T3.CTR_PERFIL_NUM = T1.CTR_PERFIL_NUM
AND T3.CTR_BAIXAS_DT_PAGTO = (SELECT MAX(T4.CTR_BAIXAS_DT_PAGTO)
FROM TAB_CTR_BAIXAS T4
WHERE T4.PAR_EMP_COD = T3.PAR_EMP_COD
AND T4.PAR_PRD_COD = T3.PAR_PRD_COD
AND T4.CTR_COD_NUM = T3.CTR_COD_NUM
AND T4.CTR_COD_EXT = T3.CTR_COD_EXT
AND T4.CTR_PERFIL_NUM = T3.CTR_PERFIL_NUM)
AND T3.CTR_BAIXAS_NUM = (SELECT MAX(T5.CTR_BAIXAS_NUM)
FROM TAB_CTR_BAIXAS T5
WHERE T5.PAR_EMP_COD = T3.PAR_EMP_COD
AND T5.PAR_PRD_COD = T3.PAR_PRD_COD
AND T5.CTR_COD_NUM = T3.CTR_COD_NUM
AND T5.CTR_COD_EXT = T3.CTR_COD_EXT
AND T5.CTR_PERFIL_NUM = T3.CTR_PERFIL_NUM)) = 0
OR CTR_PERFIL_STA_SISTEMA = 'N'
AND CTR_PERFIL_DT_VENC <= TO_DATE(SYSDATE - 5))
AND EXISTS (SELECT *
FROM TAKS076T_PREST_ACORDO_REACT PRES,
TAKS063T_ACORDO ACOR
WHERE PRES.PKND_CONTRATO = 920916
AND PRES.PKND_PRODUTO = 7
AND PRES.PKND_PRESTACAO = CTR_PERFIL_NUM
AND ACOR.PKND_ACORDO = PRES.PKND_ACORDO
AND ACOR.ATDT_CANCEL IS NULL
AND ACOR.FL_BX_NEGATIVACAO = 'S')
AND NOT EXISTS (SELECT REFI.FKND_CONTRATO
FROM TAKS900T_REFIN REFI
WHERE REFI.FKND_CONTRATO = 920916
--AND REFI.FKSV_SERIE = V_FKSV_SERIE
AND REFI.FKND_EMPRESA = 4
AND REFI.FKND_PRODUTO = 2
AND REFI.ATSV_STPAGTO = 'N'
AND REFI.ATDT_ENVIO >= TO_DATE('01/02/2020','DD/MM/YYYY'))
--AND REFI.FKND_PARCELA = CTR_PERFIL_NUM
Colocar subquery no group by
Como eu faço um group by dessa query? Veja que tenho um SUM e logo em seguida um campo criado por uma subquery
- dr_gori
- Moderador
- Mensagens: 5018
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Uma forma de fazer isso é primeiro buscar toda informação que você precisa em uma sub-query e só no final fazer os SUM e GROUP BY.
Por exemplo:
Por exemplo:
select nnnnnn
, SUM(AXG2000.Cob_Leasing(CTR_COD_NUM,CTR_COD_EXT,CTR_PERFIL_NUM,SYSDATE,'P')) AS VALOR,
from (
SELECT 0,
SYSDATE,
CTR_COD_NUM,CTR_COD_EXT,CTR_PERFIL_NUM,
SUBSTR(TO_CHAR((SELECT MAX(SUBSTR(TO_CHAR(T2.CTR_PERFIL_NUM,'00'),2,2))
FROM TAB_CTR_PERFIL T2
WHERE T2.PAR_EMP_COD = T1.PAR_EMP_COD
AND T2.PAR_PRD_COD = T1.PAR_PRD_COD
AND T2.CTR_COD_NUM = T1.CTR_COD_NUM
AND T2.CTR_COD_EXT = T1.CTR_COD_EXT),'00'),2,2) AS PRAZO
FROM TAB_CTR_PERFIL T1
WHERE PAR_EMP_COD = 2
AND PAR_PRD_COD = 11
AND CTR_COD_NUM = LPAD(SUBSTR(920916,1,LENGTH(920916)-1),18,'0')
AND CTR_COD_EXT = AXG2000.FN_COB_LEA_TRAZ_EXTENSAO(' ')
AND CTR_PERFIL_NUM >0
AND CTR_PERFIL_NUM <99
AND CTR_PERFIL_TP_VRG NOT IN ('A','F')
AND AXG2000.Cob_Leasing(CTR_COD_NUM,CTR_COD_EXT,CTR_PERFIL_NUM,SYSDATE,'P') > ((CTR_PERFIL_VALOR_PRCL_ATUAL+CTR_PERFIL_VALOR_VRG_ATUAL)*0.70)
AND (CTR_PERFIL_STA_SISTEMA = 'S'
AND CTR_PERFIL_DT_VENC < (SELECT MAX(CTR_BAIXAS_DT_PAGTO) FROM TAB_CTR_BAIXAS T2
WHERE T2.CTR_BAIXAS_DT_PAGTO = (SELECT MAX(T5.CTR_BAIXAS_DT_PAGTO)
FROM TAB_CTR_BAIXAS T5
WHERE T5.PAR_EMP_COD = T2.PAR_EMP_COD
AND T5.PAR_PRD_COD = T2.PAR_PRD_COD
AND T5.CTR_COD_NUM = T2.CTR_COD_NUM
AND T5.CTR_COD_EXT = T2.CTR_COD_EXT
AND T5.CTR_PERFIL_NUM = T2.CTR_PERFIL_NUM)
AND T2.PAR_EMP_COD = T1.PAR_EMP_COD
AND T2.PAR_PRD_COD = T1.PAR_PRD_COD
AND T2.CTR_COD_NUM = T1.CTR_COD_NUM
AND T2.CTR_COD_EXT = T1.CTR_COD_EXT
AND T2.CTR_PERFIL_NUM = T1.CTR_PERFIL_NUM
AND T2.CTR_BAIXAS_DT_ESTORNO IS NULL
AND (T2.CTR_BAIXAS_DEVIDO_VAL_PRCL <> 0 OR
T2.CTR_BAIXAS_DEVIDO_VAL_VRG <> 0 OR
T2.CTR_BAIXAS_DEVIDO_VAL_MULTA <> 0 OR
T2.CTR_BAIXAS_DEVIDO_VAL_CP_DIA <> 0))
AND (SELECT SUM(T3.CTR_BAIXAS_VALOR_RESID_ABSORV)
FROM TAB_CTR_BAIXAS T3
WHERE T3.PAR_EMP_COD = T1.PAR_EMP_COD
AND T3.PAR_PRD_COD = T1.PAR_PRD_COD
AND T3.CTR_COD_NUM = T1.CTR_COD_NUM
AND T3.CTR_COD_EXT = T1.CTR_COD_EXT
AND T3.CTR_PERFIL_NUM = T1.CTR_PERFIL_NUM
AND T3.CTR_BAIXAS_DT_PAGTO = (SELECT MAX(T4.CTR_BAIXAS_DT_PAGTO)
FROM TAB_CTR_BAIXAS T4
WHERE T4.PAR_EMP_COD = T3.PAR_EMP_COD
AND T4.PAR_PRD_COD = T3.PAR_PRD_COD
AND T4.CTR_COD_NUM = T3.CTR_COD_NUM
AND T4.CTR_COD_EXT = T3.CTR_COD_EXT
AND T4.CTR_PERFIL_NUM = T3.CTR_PERFIL_NUM)
AND T3.CTR_BAIXAS_NUM = (SELECT MAX(T5.CTR_BAIXAS_NUM)
FROM TAB_CTR_BAIXAS T5
WHERE T5.PAR_EMP_COD = T3.PAR_EMP_COD
AND T5.PAR_PRD_COD = T3.PAR_PRD_COD
AND T5.CTR_COD_NUM = T3.CTR_COD_NUM
AND T5.CTR_COD_EXT = T3.CTR_COD_EXT
AND T5.CTR_PERFIL_NUM = T3.CTR_PERFIL_NUM)) = 0
OR CTR_PERFIL_STA_SISTEMA = 'N'
AND CTR_PERFIL_DT_VENC <= TO_DATE(SYSDATE - 5))
AND EXISTS (SELECT *
FROM TAKS076T_PREST_ACORDO_REACT PRES,
TAKS063T_ACORDO ACOR
WHERE PRES.PKND_CONTRATO = 920916
AND PRES.PKND_PRODUTO = 7
AND PRES.PKND_PRESTACAO = CTR_PERFIL_NUM
AND ACOR.PKND_ACORDO = PRES.PKND_ACORDO
AND ACOR.ATDT_CANCEL IS NULL
AND ACOR.FL_BX_NEGATIVACAO = 'S')
AND NOT EXISTS (SELECT REFI.FKND_CONTRATO
FROM TAKS900T_REFIN REFI
WHERE REFI.FKND_CONTRATO = 920916
--AND REFI.FKSV_SERIE = V_FKSV_SERIE
AND REFI.FKND_EMPRESA = 4
AND REFI.FKND_PRODUTO = 2
AND REFI.ATSV_STPAGTO = 'N'
AND REFI.ATDT_ENVIO >= TO_DATE('01/02/2020','DD/MM/YYYY'))
--AND REFI.FKND_PARCELA = CTR_PERFIL_NUM
)
group by nnnnnnn
dr_gori, nessa abordagem só trás o VALOR. Demais campos não aparece.
- dr_gori
- Moderador
- Mensagens: 5018
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Quando eu coloquei select nnnnnn significa que é pra colocar em "nnnnn" todos os campos que você quer.
Voltei ao problema, pois não funcionou. O campo Prazo eu deveria colocar e é a subquery e se eu colocarno lugar do nnnnnnn caio nomesmo problema do Group By.
dr_gori, resolveu sim e muito obrigado. Eu é que estava enganado. Tem como marcar a sua resposta, como solução do meu problema?
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 4 visitantes