我有一张包含以下数据的表格
atp ananthapur
blr bangalore
chn chennai
德尔迪希
hmp himachal
我需要一个查询来获取数据,以便代码'hyd'和'blr'的行始终保持在顶部,然后其余行将跟随。
我这样做了如下 -
select code,dest from (
select 1 rown,a.* from LOCATION a
where a.code in ('hyd','blr')
union
select 2 rown,b.* from LOCATION b
where b.code not in ('hyd','blr')
)
order by rown
我也可以想到以其他方式做到这一点。但我的问题是 -
是否有任何oracle定义的功能来完成此任务?
答案 0 :(得分:2)
是的,Oracle有这样的功能,它是ORDER BY expressions-list
条款
尝试:
SELECT * FROM LOCATION a
ORDER BY
CASE WHEN a.code in ('hyd','blr') THEN 1 ELSE 2 END