Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde pessoal,
Sei que tem varios tópicos sobre esse erro, porém analisei todos e nenhum foi aplicável ao meu caso ( a maioria era porquê o pessoal esquecia do Group By ao final das Querys) .
Se alguém puder ajudar, agradeço . Os campos sem função estão inseridos no group by, porém o erro persiste .
SELECT * FROM(
select
LPAD(C.MES_COMPETENCIA,2,'0') ||'/'||C.ANO_COMPETENCIA AS PROJETO,
E.DS_EQUIPE as EQUIPE,
SUM(NVL((CC.QT_HORAS_CHEIA - SUM(AU.DT_FIM - AU.DT_INI)*24 ),CC.QT_HORAS_CHEIA)) as "ESFORÇO CALCULADO"
from EQUIPE E,
COLABORADOR C1,
COMPETENCIA C,
COMPETENCIA_COLABORADOR CC,
AUSENCIAS AU
where E.CD_EQUIPE=CC.CD_EQUIPE
and C.CD_COMPETENCIA=CC.CD_COMPETENCIA
and C1.CD_COLABORADOR=CC.CD_COLABORADOR
and C1.STATUS = 1
AND C1.CD_GESTOR <> C1.CD_COLABORADOR
AND AU.CD_COLABORADOR (+) = C1.CD_COLABORADOR
GROUP BY E.DS_EQUIPE, LPAD(C.MES_COMPETENCIA,2,'0') ||'/'||C.ANO_COMPETENCIA
) VT
WHERE VT.PROJETO = ((select to_char(sysdate, 'MM') from dual)||'/'||(select to_char(sysdate, 'RRRR') from dual))continua com o mesmo erro
>
13 minutos atrás, Motta disse:
SELECT * FROM(
select
LPAD(C.MES_COMPETENCIA,2,'0') ||'/'||C.ANO_COMPETENCIA AS PROJETO,
E.DS_EQUIPE as EQUIPE,
SUM(NVL((CC.QT_HORAS_CHEIA - SUM(AU.DT_FIM - AU.DT_INI)*24 ),CC.QT_HORAS_CHEIA)) as "ESFORÇO CALCULADO"
from EQUIPE E,
COLABORADOR C1,
COMPETENCIA C,
COMPETENCIA_COLABORADOR CC,
AUSENCIAS AU
where E.CD_EQUIPE=CC.CD_EQUIPE
and C.CD_COMPETENCIA=CC.CD_COMPETENCIA
and C1.CD_COLABORADOR=CC.CD_COLABORADOR
and C1.STATUS = 1
AND C1.CD_GESTOR <> C1.CD_COLABORADOR
AND AU.CD_COLABORADOR (+) = C1.CD_COLABORADOR
GROUP BY CC.QT_HORAS_CHEIA,U.DT_FIM,AU.DT_INI,E.DS_EQUIPE, LPAD(C.MES_COMPETENCIA,2,'0') ||'/'||C.ANO_COMPETENCIA
) VT
WHERE VT.PROJETO = ((select to_char(sysdate, 'MM') from dual)||'/'||(select to_char(sysdate, 'RRRR') from dual))
Continua o mesmo erro , mesmo incluindo o AU.DT_FIM e DT_INI no group by..Tira os dt_fim e dt_ini do group by ...
O erro persiste Motta. Pelo que eu tava lendo na net, eu não posso ter duas funções de grupo aninhadas do tipo :
SUM(NVL((CC.QT_HORAS_CHEIA - SUM(AU.DT_FIM - AU.DT_INI)*24 ),CC.QT_HORAS_CHEIA))
porém eu preciso dela pois eu preciso reduzir o QT_HORAS_CHEIA( horas totais) de SUM(AU.DT_FIM - AU.DT_INI)*24 que são as horas faltadas pra ter um retorno de horas reais. o SUM de fora acumula tudo pra mim, sem ele dá tudo errado .
Será que tem alguma maneira de converter isso e retirar um SUM porém tendo o mesmo retorno ?
Tenta colocar as colunas
QT_HORAS_CHEIA
DT_FIM
DT_INI
na subquery sem totalizar e totalizar no select externo
Desse jeito ? , assim me retorna apenas o resultado de 1501 , porém o correto que eu necessito é
( EQUIPE 1 = 1299
EQUIPE 2 = 1010
EQUIPE 3 = 147)
SELECt SUM(NVL((VT.QT_HORAS_CHEIA - SUM(VT.DT_FIM - VT.DT_INI)*24 ),VT.QT_HORAS_CHEIA)) FROM(
select
LPAD(C.MES_COMPETENCIA,2,'0') ||'/'||C.ANO_COMPETENCIA AS PROJETO,
E.DS_EQUIPE as EQUIPE,
AU.DT_FIM,
AU.DT_INI,
QT_HORAS_CHEIA
from EQUIPE E,
COLABORADOR C1,
COMPETENCIA C,
COMPETENCIA_COLABORADOR CC,
AUSENCIAS AU
where E.CD_EQUIPE=CC.CD_EQUIPE
and C.CD_COMPETENCIA=CC.CD_COMPETENCIA
and C1.CD_COLABORADOR=CC.CD_COLABORADOR
and C1.STATUS = 1
AND C1.CD_GESTOR <> C1.CD_COLABORADOR
AND AU.CD_COLABORADOR (+) = C1.CD_COLABORADOR
AND TO_DATE(LPAD(C.MES_COMPETENCIA,2,'0') ||'/'||C.ANO_COMPETENCIA,'MM/RRRR') = TRUNC(SYSDATE,'MM')
-- GROUP BY CC.QT_HORAS_CHEIA,C1.DS_COLABORADOR
) VT
WHERE TO_DATE(VT.PROJETO,'MM/RRRR') = TRUNC(SYSDATE,'MM')
GROUP BY VT.QT_HORAS_CHEIA,VT.EQUIPE,vt.projeto, vt.dt_ini,vt.dt_fim
--WHERE VT.PROJETO = ((select to_char(sysdate, 'MM') from dual)||'/'||(select to_char(sysdate, 'RRRR') from dual))Fiz o SUM externo no Select externo e o restante mantive como o primeiro scritp que te mandei, fiz o group by dentro e fora , ai funcionou certinho. Ficou
SELECt VT.PROJETO,SUM(VT.ESFORCO_CALC),VT.EQUIPE FROM(
-- SCRIPT PRIMARIO --
) VT
WHERE TO_DATE(VT.PROJETO,'MM/RRRR') = TRUNC(SYSDATE,'MM')
GROUP BY VT.EQUIPE,VT.PROJETO
. Muito Obrigado Motta !