2016-12-27 1 views
0

Я хотел бы, чтобы отфильтровать данные, используя вспомогательный запрос в интервальной функцииФильтр данных в течение 30 месяцев с помощью подзапроса с интервальной функции в Teradata

Ниже приводится запрос я использую

SEL * FROM my_table WHERE MY_DATE < CURRENT_DATE- INTERVAL '30' MONTH; 

выше запрос работает. Однако я хочу параметризовать период «30» с помощью подзапроса. Пожалуйста, предложите, как это сделать.

Заранее спасибо

+0

Что вы подразумеваете под параметризацией здесь? пользователь должен запросить значение? почему вам нужен суб-запрос? –

+0

Я не думаю, что Teradata позволит вам сделать это с помощью подзапроса (кроме того, что подзапрос даст вам результат, а не одно значение). Я думаю, вам нужно создать хранимую процедуру, чтобы иметь возможность сделать что-то вроде этого. Я видел хранимые процедуры, которые сначала строят запрос, а затем запускают его. К сожалению, я не знаю особенностей того, как это было сделано. – LokMac

+0

Я помню, что он использовал запрос для сопоставления нескольких строк, чтобы в конечном итоге сделать выходной запрос, например. «SELECT» SELECT * FROM my_table WHERE MY_DATE LokMac

ответ

0

Не используйте интервал расчетов с год/месяц, как она не будет выполнена, например, DATE '2016-12-31' + INTERVAL '30' MONTH приводит к 2019-06-31 (согласно стандарту SQL), который, очевидно, не существует.

SELECT * 
FROM my_table 
WHERE MY_DATE < ADD_MONTHS(CURRENT_DATE, (SELECT -col FROM tab)); 

Если col на самом деле ИНТЕРВАЛ вам нужно, чтобы бросить его в INT.

+0

Спасибо @dnoeth – user2975559

Смежные вопросы