我在下表中有一个列event
,Hive
如下所示。
Event
Sent
Sent
Open
Open
Click
Sent
Open
Signup
Sent
Open
Click
现在我想event
使用 case 语句根据列中的值创建新列。
我想signup
在事件列中的位置我希望该Previous_event
列正好是preceding
值。
我已经尝试过如下。
select event,
case when event = 'Sent' then 'No_event'
when event = 'Open' then 'Sent'
when event = 'Click' then 'Open'
else -1
end as Previous_event
from table;
Result
Sent No_event
Sent No_event
Open Sent
Open Sent
Click Open
Sent No_event
Open Sent
Signup -1
Sent No_event
Open Sent
Click Open
Expected result
Sent No_event
Sent No_event
Open Sent
Open Sent
Click Open
Sent No_event
Open Sent
Signup Open
Sent No_event
Open Sent
Click Open
我怎样才能实现我想要的?