Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

André Sena da Silva

ERRO ORA-00979: não é uma expressão GROUP BY

Recommended Posts

Estou tentando fazer uma QUERY que retorne a soma das notas separadas por ano atraves de um SUB SELECT e esta dando o seguinte erro : ORA-00979: não é uma expressão GROUP BY

SELECT EXTRACT(MONTH FROM DTFATUR) AS MES,

EXTRACT(YEAR FROM DTFATUR) AS ANO,
ITE.CODVEND,
VEN.APELIDO,
SUM(VLRNOTA) AS VALORNOTA,
(
SELECT
SUM(CAB2.VLRNOTA) AS VALORNOTA
FROM TGFCAB CAB2
WHERE  CAB2.DTFATUR  = CAB.DTFATUR
GROUP BY EXTRACT(YEAR FROM CAB2.DTFATUR)
)
AS VRLTOT_ANO
FROM TGFCAB CAB
INNER JOIN TGFITE ITE ON (ITE.NUNOTA = CAB.NUNOTA)
INNER JOIN TGFVEN VEN ON (VEN.CODVEND = ITE.CODVEND)
WHERE  DTFATUR BETWEEN '01/01/2015' AND '05/01/2015'
GROUP BY EXTRACT(MONTH FROM DTFATUR),
EXTRACT(YEAR FROM DTFATUR),
ITE.CODVEND, VEN.APELIDO
ORDER BY ITE.CODVEND,
EXTRACT(YEAR FROM DTFATUR),
EXTRACT(MONTH FROM DTFATUR);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os campos informados antes das funções de grupo devem ser declarados no Group by

SELECT EXTRACT(MONTH FROM DTFATUR) AS MES,

EXTRACT(YEAR FROM DTFATUR) AS ANO,
ITE.CODVEND,
VEN.APELIDO,
SUM(VLRNOTA) AS VALORNOTA,
(
SELECT
SUM(CAB2.VLRNOTA) AS VALORNOTA
FROM TGFCAB CAB2
WHERE  CAB2.DTFATUR  = CAB.DTFATUR
GROUP BY EXTRACT(YEAR FROM CAB2.DTFATUR)
)
AS VRLTOT_ANO
FROM TGFCAB CAB
INNER JOIN TGFITE ITE ON (ITE.NUNOTA = CAB.NUNOTA)
INNER JOIN TGFVEN VEN ON (VEN.CODVEND = ITE.CODVEND)
WHERE  DTFATUR BETWEEN '01/01/2015' AND '05/01/2015'
GROUP BY EXTRACT(MONTH FROM DTFATUR),
EXTRACT(YEAR FROM DTFATUR),
ITE.CODVEND, VEN.APELIDO
ORDER BY ITE.CODVEND,
EXTRACT(YEAR FROM DTFATUR),
EXTRACT(MONTH FROM DTFATUR)
group by EXTRACT(MONTH FROM DTFATUR) ,
EXTRACT(YEAR FROM DTFATUR) ,
ITE.CODVEND,
VEN.APELIDO

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mota usando o seu código esta dando o seguinte erro

ORA-00933: comando SQL não encerrado adequadamente

 

 

Os campos informados antes das funções de grupo devem ser declarados no Group by

SELECT EXTRACT(MONTH FROM DTFATUR) AS MES,EXTRACT(YEAR FROM DTFATUR) AS ANO,ITE.CODVEND,VEN.APELIDO,SUM(VLRNOTA) AS VALORNOTA,(SELECTSUM(CAB2.VLRNOTA) AS VALORNOTAFROM TGFCAB CAB2WHERE  CAB2.DTFATUR  = CAB.DTFATURGROUP BY EXTRACT(YEAR FROM CAB2.DTFATUR))AS VRLTOT_ANOFROM TGFCAB CABINNER JOIN TGFITE ITE ON (ITE.NUNOTA = CAB.NUNOTA)INNER JOIN TGFVEN VEN ON (VEN.CODVEND = ITE.CODVEND)WHERE  DTFATUR BETWEEN '01/01/2015' AND '05/01/2015'GROUP BY EXTRACT(MONTH FROM DTFATUR),EXTRACT(YEAR FROM DTFATUR),ITE.CODVEND, VEN.APELIDOORDER BY ITE.CODVEND,EXTRACT(YEAR FROM DTFATUR),EXTRACT(MONTH FROM DTFATUR)group by EXTRACT(MONTH FROM DTFATUR) ,EXTRACT(YEAR FROM DTFATUR) ,ITE.CODVEND,VEN.APELIDO

Motta usando o seu código esta dando o seguinte erro

ORA-00933: comando SQL não encerrado adequadamente

Compartilhar este post


Link para o post
Compartilhar em outros sites

Li errado , o problema no subselect como coluna , aí não permite o group by.

 

Monte uma tabela virtual com o select e agrupe por ela, uma solução simples.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.