2012-06-08 12 views
6

मेरे पास कुछ युगल के साथ एक पोस्टग्रेएसक्यूएल तालिका है, वे प्रीसेटेज स्टोर करते हैं। तो चलो कहते हैं कि स्तंभ हैं:एसक्यूएल ऑर्डर दो कॉलम के उच्चतम मूल्य

pc_1 
pc_2 

क्या मैं चाहता हूँ ऑर्डर करने के लिए इन दो कॉलम की जो भी सबसे अधिक राशि उतरते है, और फिर अन्य कॉलम के आधार पर, फिर से उतरते कर रहा है।

हमारे डेटा है तो अगर, कहते हैं:

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

चयन * <something द्वारा mytable आदेश से> देना होगा:

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

ध्यान दें कि 'ग्रेटेस्ट' और 'LEAST' मानक एसक्यूएल नहीं हैं। – 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 
संबंधित मुद्दे