Teradata Выберите, где дата = предыдущий рабочий день / день недели - PullRequest
0 голосов
/ 16 мая 2018

Использование Teradata 15.1x

Я пытаюсь выбрать данные за предыдущий день недели. Я могу получить предыдущий день, используя

cast(cast(cast(a.date_dim_ck as varchar(13)) as date format 'yyyymmdd') as date format 'mm-dd-yyyy') = current_date - 1

но когда я пытаюсь выполнить случай, когда в понедельник я оглядываюсь назад на 3 дня вместо 1 (чтобы получить данные за пятницу, см. Ниже), я получаю "[3707] Синтаксическая ошибка, ожидалось что-то вроде ключевого слова 'END' между ')' и '='. "

where case 
when td_day_of_week(current_date)<>2 
then
cast(cast(cast(a.date_dim_ck as varchar(13)) as date format 'yyyymmdd') as date format 'mm-dd-yyyy') = current_date - 1
else
cast(cast(cast(a.date_dim_ck as varchar(13)) as date format 'yyyymmdd') as date format 'mm-dd-yyyy') = current_date - 3

Что я делаю не так?

1 Ответ

0 голосов
/ 16 мая 2018

Вы можете использовать только регистр, чтобы определить значение поля на основе других критериев.Смотрите синтаксис ниже.

where cast(cast(cast(a.date_dim_ck as varchar(13)) as date format 'yyyymmdd') as date format 'mm-dd-yyyy') = case  
    when td_day_of_week(current_date)<>2 
    then
     current_date - 1
    else
     current_date - 3
    end 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...