Oracle SQL Server-按语句中列出变量的方式排序



我试图根据语句的编写方式对列表进行排序,例如:

select state, count(*)
from some_tbl
where state = 'WA'
or zip = 90210
or city = 'Salt Lake City'

(对不起这个坏例子(

我想订购华盛顿州排名第一,加利福尼亚州排名第二(邮编90210,加利福尼亚州(,犹他州(犹他州盐湖城(排名最后。

所以,

WA  
CA  
UT 

有没有一种方法可以根据我写查询的方式对订单进行排序?

您可以使用case表达式:

order by (case when state = 'WA' then 1
when zip = '90210' then 2
else 3
end)

在对Gordon的回答中,我会将其重写为

order by case when state='WA' then 1
when state='CA' then 2
when state='OH' then 3
end

decode()可以方便地缩短表达式:

order by decode(state, 'WA', 1, 'CA', 2, 'UT', 3)

最新更新