Codigo sql erro ora-00904, nao resolve

Estou tentando executar esse codigo no PLSQL, porém está dando erro de ORA-00904, tentei pesquisar mas vi que há soluções diferentes para casos diferentes, alguem poderia me ajudar.

SELECT
CODPARC,
RAZAOSOCIAL,
NOMEPARC,
DTNEG,
NUMNOTA,
MESES,
APELIDO,
SUM(VENDAS) VENDAS,
SUM(BONIF) BONIF,
SUM(TROCAS) TROCAS
FROM
(
SELECT
V.CODPARC,
V.RAZAOSOCIAL,
V.NOMEPARC,
V.DTNEG,
V.NUMNOTA,
TO_CHAR(V.DTNEG,‘MM/YYYY’) MESES,
V.CODVEND||’-’||V.REPRESENTANTE APELIDO,
DECODE(V.GRUPO,‘VENDAS’,V.TOTAL,0) VENDAS,
DECODE(V.GRUPO,‘BONIFICACOES’,V.TOTAL,0) BONIF,
0 TROCAS
FROM
VGFPERS_VENDAS V
WHERE
V.CODVEND = &CODVEND AND
TO_CHAR(V.DTNEG,‘MM/YYYY’) = TO_CHAR(TO_DATE(&DATAREF, ‘DD/MM/YYYY’),‘MM/YYYY’) AND
V.CODPARCMATRIZ <> 61 )
UNION ALL
SELECT
CAB.CODPARC,
PAR.RAZAOSOCIAL,
PAR.NOMEPARC,
CAB.DTNEG,
CAB.NUMNOTA,
TO_CHAR(CAB.DTNEG,‘MM/YYYY’) MESES,
CAB.CODVEND||’-’||VEN.APELIDO APELIDO,
0 VENDAS,
0 BONIF,
-CAB.VLRNOTA TROCAS
FROM
TGFCAB CAB,
TGFPAR PAR,
TGFTOP TOP,
TGFVEN VEN
WHERE
CAB.CODPARC = PAR.CODPARC AND
CAB.CODVEND = VEN.CODVEND AND
CAB.CODTIPOPER = TOP.CODTIPOPER AND
CAB.DHTIPOPER = TOP.DHALTER AND
CAB.TIPMOV = ‘P’ AND
TOP.GRUPO = ‘TROCAS’ AND
CAB.STATUSNOTA = ‘L’ AND
CAB.PENDENTE = ‘N’ AND
CAB.CODVEND = &CODVEND AND
TO_CHAR(CAB.DTNEG,‘MM/YYYY’) = TO_CHAR(TO_DATE(&DATAREF, ‘DD/MM/YYYY’), ‘MM/YYYY’)

GROUP BY
CODPARC,
RAZAOSOCIAL,
NOMEPARC,
DTNEG,
NUMNOTA,
MESES,
APELIDO
UNION ALL
SELECT
0 CODPARC,
’ RAZAOSOCIAL,
'
’ NOMEPARC,
TO_DATE(&DATAREF) DTNEG,
0 NUMNOTA,
– TO_CHAR(TO_DATE(&DATAREF, ‘DD/MM/YYYY’), ‘MM/YYYY’)
TO_DATE(TO_CHAR(&DATAREF, ‘MM/YYYY’), ‘DD/MM/YYYY’) MES,
VEN.CODVEND||’-’||VEN.APELIDO APELIDO,
0 VENDAS,
0 BONIF,
0 TROCAS
FROM TGFVEN VEN
WHERE
VEN.CODVEND = &CODVEND
GROUP BY
CODPARC,
RAZAOSOCIAL,
NOMEPARC,
DTNEG,
NUMNOTA,
MES,
APELIDO
ORDER BY
RAZAOSOCIAL,
DTNEG,
NUMNOTA

Poderia mostrar o erro completo que é gerado ?

aa2

Parece-me um problema de parenteses.

Não percebi se queres unir 3 queries independentes com um inner select na primeira ou se queres que o outer select seja para apanhar o union e fazer então o group by uma unica vez.

1 curtida

Muito obrigado.