Разделен существует условие в условии - PullRequest
0 голосов
/ 27 апреля 2018

У меня следующий запрос:

select user_id,
case when event='Analysis' 
and max(case when event='Strat' then max_time end) over(partition by user_id) >
max(case when event='Analysis' then max_time end) over(partition by user_id) then null 
**when event like 'Premium:%' and exists max(select distinct event from sub where event='Complete') over(partition by user_id) then null**
else event end event
from (
select distinct user_id, event, 
[*bunch of other columns*]
max(time) max_time
from table
[*bunch of joins and filters*]
group by 1,2
) sub

В строке с ** я пытаюсь добавить предложение таким образом: если event like 'Premium:%', но у пользователя есть event='Complete' (в любой момент), то измените на event is null.

Есть предложения? Спасибо

1 Ответ

0 голосов
/ 27 апреля 2018

вам нужно использовать условную сумму в оконной функции, разбивая по идентификатору пользователя:

case 
    when event like 'Premium:%' 
    and sum(case when event='Complete' then 1 else 0 end) over (partition by user_id)>0 
    then null 
else event end
...