Повторное использование оператора IIF для Redshift CASE - PullRequest
0 голосов
/ 07 сентября 2018

Я работаю с запросом, который мне дали от клиента, но у нас разные языки 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

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

1 Ответ

0 голосов
/ 07 сентября 2018

В красном смещении Lag , в функции value_expr и offset.

есть только два параметра.

LAG (value_expr [, offset]) [ИГНОР НУЛЬ | УВАЖАЕМЫЕ НУЛЬЫ] 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
...