Я пытаюсь создать оператор выбора SQL, который использует переменные, чтобы определить, как работает функция WHERE. Код сталкивается с неожиданными проблемами.
Я попытался изменить синтаксис условий, чтобы они вместо этого использовали LIKE, но проблема все еще сохраняется. Переменная определенно сохраняется, но все равно выдает ошибки.
SELECT (SELECT description FROM froomtype rt
WHERE rt.roomtypeid = rsd.roomtypeid),
SUM(totalrevenue)
FROM froomservicedata rsd
WHERE (SELECT requestdate FROM froomservice rs WHERE rs.roomserviceid = rsd.roomserviceid) >
(CASE
WHEN UPPER(&&timeperiod) = 'D' THEN
sysdate - interval '24' hour
WHEN UPPER(&&timeperiod) = 'W' THEN
sysdate - interval '7' day
WHEN UPPER(&&timeperiod) = 'M' THEN
sysdate - interval '1' month
WHEN UPPER(&&timeperiod) = 'Y' THEN
sysdate - interval '1' year
ELSE
sysdate + 1
END)
GROUP BY (SELECT description FROM froomtype rt WHERE rt.roomtypeid = rsd.roomtypeid);
Вот сообщение об ошибке:
ORA-00904: "Y": invalid identifier
00904. 00000 - "%s: invalid identifier"