Criei a consulta sql abaixo. Porém, ao executar, o Oracle retorna a seguinte mensagem de erro:
ORA-00979: não é uma expressão GROUP BY.
Na consulta abaixo, o erro está na comparação desta linha que descrevo a seguir. Como resolver o problema ?
(select COUNT(y.chapa) from PFUNC y where to_char(y.dataadmissao, 'mm') = to_char(x.dataadmissao, 'mm') and to_char(y.dataadmissao, 'rrrr') = to_char(x.dataadmissao, 'yyyy') and y.CODCOLIGADA = x.CODCOLIGADA and y.CODFILIAL = x.CODFILIAL and y.CODTIPO = 'D')
select
to_char(x.dataadmissao, 'rrrr') as ANO,
to_char(x.dataadmissao, 'mm') as mês,
x.codcoligada COLIGADA,
x.codfilial FILIAL,
(select COUNT(y.chapa) from PFUNC y where to_char(y.dataadmissao, 'mm') = to_char(x.dataadmissao, 'mm') and to_char(y.dataadmissao, 'rrrr') = to_char(x.dataadmissao, 'yyyy') and y.CODCOLIGADA = x.CODCOLIGADA and y.CODFILIAL = x.CODFILIAL and y.CODTIPO = 'D'),
(select COUNT(y.chapa) from PFUNC y where to_char(y.dataadmissao, 'mm') = to_char(x.dataadmissao, 'mm') and to_char(y.dataadmissao, 'rrrr') = to_char(x.dataadmissao, 'yyyy') and y.CODCOLIGADA = x.CODCOLIGADA and y.CODFILIAL = x.CODFILIAL and y.CODTIPO <> 'D')
from
pfunc x
where
x.codcoligada = 1
and x.codtipo not in ('A', 'D', 'T', 'U')
and to_char(x.dataadmissao, 'mm') between 1 and 12
and to_char(x.dataadmissao, 'yyyy') = '2012'
group by
x.codcoligada,
x.codfilial,
to_char(x.DATAADMISSAO, 'mm'),
to_char(x.DATAADMISSAO, 'rrrr')
order by to_char(x.DATAADMISSAO, 'rrrr'), to_char(x.DATAADMISSAO, 'mm'), x.CODCOLIGADA, x.CODFILIAL