我需要以下输出的帮助。实际的表集更大,但是为了简化理解,这里我对其进行了简化。
输入表:
id level
1 L1
2 L1
3 L1
3 L2
4 L2
所需结果:
ID Level
1 L1
2 L1
3 L2
4 L2
基本上从L1
和L2
中删除,查询应为给定的ID选择L2(如果存在)并过滤掉L1
答案 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