I have this problem in my code and I can't solve it
SELECT COUNT(0) AS CANT,
C.C06NOMBRE AS CONSOLIDADORA
FROM T07OBLIGACION A
JOIN T06EMPRESA B ON A.C07EMPRESA = B.C06IDEMPRESA AND A.C07CODSUCURSAL = B.C06CODSUCURSAL
JOIN T06EMPRESA C ON C.C06IDEMPRESA = B.C06IDPAGCON AND C.C06CODSUCURSAL = B.C06SUCURSALCON
WHERE
CASE
WHEN B.C06FECHACOR <= SYSDATE THEN
A.C07FECHADE >= ADD_MONTHS(B.C06FECHACOR, -2) AND A.C07FECHADE <= ADD_MONTHS(B.C06FECHACOR, -1) - 1
ELSE
A.C07FECHADE >= ADD_MONTHS(B.C06FECHACOR, -1) AND A.C07FECHADE <= B.C06FECHACOR - 1
END
GROUP BY C.C06NOMBRE
This generates an error that says "ERROR ORA-00908: MISSING KEYWORD"
It seems the error is found within the expression:
CASE
WHEN B.C06FECHACOR <= SYSDATE THEN
A.C07FECHADE >= ADD_MONTHS(B.C06FECHACOR, -2) AND A.C07FECHADE <= ADD_MONTHS(B.C06FECHACOR, -1) - 1
ELSE
A.C07FECHADE >= ADD_MONTHS(B.C06FECHACOR, -1) AND A.C07FECHADE <= B.C06FECHACOR - 1
END
I have tried to adjust this line many times but nothing works. Can you help me see what's happening?
You've wrongly used case expression; should be something like this:
where a.C07FECHADE between case when b.C06FECHACOR <= sysdate then ADD_MONTHS(B.C06FECHACOR, -2)
else ADD_MONTHS(B.C06FECHACOR, -1)
end
and case when b.C06FECHACOR <= sysdate then ADD_MONTHS(B.C06FECHACOR, -1) - 1
else B.C06FECHACOR - 1
end