Мне нужно запросить базу данных Oracle, чтобы получить данные из таблицы в соответствии с днем недели.
Если это понедельник, мне нужно запросить FL_PO_LUN, если это вторник, мой запрос будетбыть на FL_PO_MAR и т. д.
Это запрос, который я пытаюсь использовать.
SELECT DISTINCT(DEPCOD),ENTECOD FROM RIO_PLA_DEP WHERE
DT_INIZIO_VAL <= trunc(sysdate) AND
DT_FINE_VAL >= trunc(sysdate) AND
(SELECT DECODE(
TO_CHAR(SYSDATE,'d'),
'1','FL_PO_LUN',
'2','FL_PO_MAR',
'3','FL_PO_MER',
'4','FL_PO_GIO',
'5','FL_PO_VEN',
'6','FL_PO_SAB',
'7','FL_PO_DOM') AS DAY_OF_WEEK
FROM DUAL) = 1;
Оператор декодирования работает нормально, но весь оператор не будет работать.На самом деле я получаю ошибку ORA-01722.
Ожидаемый результат будет:
SELECT DISTINCT(DEPCOD),ENTECOD FROM RIO_PLA_DEP WHERE
DT_INIZIO_VAL <= trunc(sysdate) AND
DT_FINE_VAL >= trunc(sysdate) AND
FL_PO_LUN = 1;