Терадата Текущий год и год-1 - PullRequest
0 голосов
/ 18 марта 2019

Как получить динамические годы в Запросе для условия где мне нужно получить данные за 2017,2018,2019, в настоящее время я жестко их кодирую (где FSC_YR в (2017,2018,2019) вместо этого мне нужно в динамический способ. Как это сделать в терадате. Я попытался извлечь (год из current_date) -2, извлекать (год из current_date) -1, извлекать (год из current_date) -3). Я получаю ошибку слишком много выражений.

1 Ответ

2 голосов
/ 18 марта 2019

Поскольку вы ищете диапазон номеров года, почему бы просто не использовать МЕЖДУ?

SELECT * 
FROM data
WHERE fsc_yr BETWEEN EXTRACT(year FROM current_date - interval '2' year) AND EXTRACT(year FROM current_date)

Но, как отметил @dnoeth в комментариях.
Чтобы избежать ошибки при запуске 29 февраля, использование INTERVAL может быть не самым безопасным методом.

Но просто вычесть из номера года не так уж и плохо.

SELECT * 
FROM data
WHERE fsc_yr BETWEEN EXTRACT(year FROM current_date)-2 AND EXTRACT(year FROM current_date)

Также обратите внимание, что такая ошибка может возникать при выборе более 1 столбца в запросе для IN

Например, это не получится:

SELECT * FROM Table1 
WHERE Col1 IN (SELECT Col1, Col2 FROM Tabel2)

Так что, если бы вы использовали запрос для данных с *, это все равно привело бы к этой ошибке.

...