TLDR: Я хочу получить таблицу с предыдущими двумя месяцами в Teradata на основе CURRENT_DATE. В настоящее время я могу получить только предыдущий месяц:
SELECT
TO_CHAR(ADD_MONTHS(CURRENT_DATE - EXTRACT(DAY FROM CURRENT_DATE )+1, -1), 'YYYY-MM') MM;
Ожидаемый результат:
+--------+
| MM |
+--------+
| 2020-01|
| 2019-12|
+--------+
Длинная версия: Я хочу что-то, что можно было бы использовать в таком большом запросе, как этот, действительный для каждого дня года, без жесткого кодирования дат. Большой запрос с жестко закодированными датами выглядит следующим образом:
AND TO_CHAR(SOME_DATE, 'YYYY-MM') IN ('2020-01', '2019-12')
и работает отлично. Ниже приведены результаты в порядке, но только за 1 месяц.
AND TO_CHAR(SOME_DATE, 'YYYY-MM') IN
(
TO_CHAR(ADD_MONTHS(CURRENT_DATE - EXTRACT(DAY FROM CURRENT_DATE )+1, -1), 'YYYY-MM')
)
Попытка добавить запятую и добавить ту же строку с -2
, не работает :
AND TO_CHAR(SOME_DATE, 'YYYY-MM') IN
(
TO_CHAR(ADD_MONTHS(CURRENT_DATE - EXTRACT(DAY FROM CURRENT_DATE )+1, -1), 'YYYY-MM'),
TO_CHAR(ADD_MONTHS(CURRENT_DATE - EXTRACT(DAY FROM CURRENT_DATE )+1, -2), 'YYYY-MM')
)
ошибка:
SELECT Failed 3706: Синтаксическая ошибка: ожидалось что-то между ')' и '.'.