我想从排名为' First'的表中选择名称。 如果没有记录,排名=' First'然后在排名为' Second'。
的地方取名示例:
--------------------
ID F_NAME RANKING
--------------------
1 Tom Second
2 John Third
3 Sarah First
--------------------
预期产出:莎拉
ID F_NAME RANKING
--------------------
1 Tom Second
2 John Third
3 James Fourth
--------------------
预期输出:Tom
仅显示第一个或第二个。像Third,Fourth这样的其他人并不重要。
此查询适用于DB2。我怎么写这样的查询?
答案 0 :(得分:0)
您可以使用ORDER BY
和FETCH FIRST
:
SELECT *
FROM table
WHERE Ranking IN ('First', 'Second')
ORDER BY Ranking
FETCH FIRST 1 ROW ONLY;
<强> DBFiddle Demo 强>
答案 1 :(得分:0)
将row_number
与order by
中的条件表达式一起使用。
select *
from (select t.*,row_number() over(order by case when ranking='First' then 1
when ranking='Second' then 2
--add more rankings as needed
else 3 end) as rnum
from tbl t
) t
where rnum=1