pivot - Oracle: Get column names of Top n values over multiple columns -


मेरा प्रश्न

मेरी क्वेरी में समान है I 3 भिन्न कॉलम के अधिकतम मूल्य की आवश्यकता है।

उदाहरण: स्तंभ 1 = 10, स्तंभ 2 = 20, स्तंभ 3 = 30> आउटपुट 30 होना चाहिए। मुझे इसके द्वारा सूची को सॉर्ट करने के लिए अधिकतम MAX मान चाहिए।

हालांकि वास्तव में मूल्य के बजाय मुझे स्तंभ नाम की आवश्यकता है और आदर्श रूप से सिर्फ अधिकतम एक नहीं बल्कि शीर्ष 3 उदाहरण के रूप में।

वांछित आउटपुट तब होगा

<पूर्व> आईडी पहले दूसरा तीसरा ------------------------------- 1 कॉलम 3 स्तंभ 2 कॉलम 1 < / Code>

आप क्या पूछ रहे हैं इसके लिए कोई अंतर्निर्मित फ़ंक्शन नहीं है। तो उपयोगकर्ता 1578653 का उत्तर अच्छा, सीधे-आगे और तेज है। एक अन्य तरीका पीएल / एसक्यूएल के साथ फ़ंक्शन लिखना होगा।

यदि आप शुद्ध एसक्यूएल का उपयोग करना चाहते हैं, लेकिन तुलना में कॉलम जोड़ना आसान बनाना चाहते हैं, यदि आप सिर्फ दो कॉलम से संतुष्ट हैं आईडी और कॉलम नाम स्ट्रिंग), आप यह कर सकते हैं:

  समूह के भीतर आईडी, सूची (कॉलम, ',') का चयन करें (मान के आधार पर क्रम) से कॉलम के रूप में (चयन आईडी, 'कॉलम 1 'के रूप में colname के रूप में, col1 mytable संघ से सभी चुनिंदा आईडी,' स्तंभ 2 'को colname के रूप में, col2 के रूप में mytable संघ के मूल्य के रूप में सभी चुनिंदा आईडी,' कॉलम 3 'को colname के रूप में, col3 mytable से मूल्य के रूप में - अधिक कॉलम यहां जोड़ें, यदि आप इच्छा) समूह द्वारा आईडी;  

ध्यान रखें कि उपयोगकर्ता 1578653 के एसक्यूएल कथन की तुलना में धीमी है, क्योंकि टेबल तीन बार पढ़ी जा रही है। (मैं भी बराबर मूल्यों को यहाँ अलग तरीके से मानता हूं, वही मान यादृच्छिक क्रम बनाता है।)


Comments