Переназначение инструкции IIF для Redshift CASE

Я работаю с запросом, который получил от клиента, но у нас разные языки SQL. Мы используем Redshift, который не включает функции iif, и, честно говоря, я никогда не использовал. Я знаю, что это в основном другой способ выражения CASE, верно? Вот запрос

select
    *
    ,iif (datediff(day, 
        lag(event_date, 1, '1900-01-01') over (partition by client_id, error_id order by event_date), 
        event_date) <= 1 
    ,'yes',  'no') flag
from table.a

Я думал, что это сработает, но он продолжает выдавать ошибку:

select
    *,
    CASE WHEN datediff(day, lag(event_date, 1, '1900-01-01')) OVER (PARTITION BY client_id, errord_id ORDER BY event_date) <= 1 THEN 'YES' ELSE 'NO' END flag
from dsa.sas_days

Может ли кто-нибудь помочь мне перенастроить это?

дополнительный ) после lag().. который должен быть в конце

Vamsi Prabhala 07.09.2018 16:42
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
1
217
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В красном смещении Отставание, в функции value_expr и offset есть только два параметра.

LAG (value_expr [, offset ]) [ IGNORE NULLS | RESPECT NULLS ] OVER ( [ PARTITION BY window_partition ] ORDER BY window_ordering )

так что вы можете попробовать это.

select
    *,CASE WHEN 
         datediff(day, lag(event_date, 1) OVER (PARTITION BY client_id, errord_id ORDER BY event_date),event_date) <= 1 
        THEN 'YES' 
       ELSE 'NO' 
      END flag
from dsa.sas_days

Спасибо, но, к сожалению, я получаю сообщение об ошибке: Invalid operation: Default parameter not be supported for window function lag; 1 statement failed..

gooponyagrinch 07.09.2018 17:05

Бинго. Спасибо!

gooponyagrinch 07.09.2018 17:40

Другие вопросы по теме