在配置单元中查询以选择col1中的第二个值作为col1中的相同值

时间:2018-09-16 11:17:37

标签: hive

我需要以下输出的帮助。实际的表集更大,但是为了简化理解,这里我对其进行了简化。

输入表:

id level
1   L1
2   L1
3   L1
3   L2
4   L2

所需结果:

ID Level
1  L1
2  L1
3  L2
4  L2

基本上从L1L2中删除,查询应为给定的ID选择L2(如果存在)并过滤掉L1

1 个答案:

答案 0 :(得分:0)

可以在order by函数的row_number中优先考虑条件。

select id,level
from (
select id,level,row_number() over(partition by id 
                                  order by case when level='L2' then 1 
                                                when level='L1' then 2 
                                           else 3 end) as rnum
from tbl
) t
where rnum=1