2012-06-08 74 views
6

我有一些帶有一些雙打的PostgreSQL表,它們存儲了precentages。所以我們說的欄目有:按兩列最高值排列的SQL順序

pc_1 
pc_2 

我想是訂購由這兩列的哪個具有最高的多寡,再由另一列,再次下降。

所以,如果我們的數據是,說:

id pc_1 pc_2 
1 12.5 11.0 
2 10.0 13.2 
3 13.2 9.0 

SELECT * FROM MYTABLE爲了通過<something>會給:

2 10.0 13.2 
3 13.2 9.0 
1 12.5 11.0 

回答

16
SELECT * 
FROM mytable 
ORDER BY 
     GREATEST(pc_1, pc_2) DESC, LEAST(pc_1, pc_2) DESC 
+0

咦,不知道我錯過了最偉大,至少所有這些年。謝謝! –

+1

請注意'GREATEST'和'LEAST'不是標準的SQL。 – Charles

4
select * 
from mytable 
order by 
case when pc_1 > pc_2 then pc_1 else pc_2 end desc, 
case when pc_1 > pc_2 then pc_2 else pc_1 end desc