oracle - Select Top (Max) Amount From Two Of Four Fields (Columns) -


मेरे पास यह क्वेरी है

  SELECT code, username, week1money, week2money, week3money, week4money से (--स्यूबक्वेयर यहां जाता है)   

शीर्ष दो हफ्तों का चयन करने के लिए, अर्थात् हफ्तों के उच्चतम मूल्य के साथ? मैं सटीक होने के लिए शीर्ष दो सप्ताह में राशि जोड़ना चाहता हूं।

अगर मैं सही समझता हूं तो आप 2 प्राप्त करना चाहते हैं प्रत्येक प्रति शीर्ष मूल्य (कोड, उपयोगकर्ता नाम) पंक्ति और (कोड, उपयोगकर्ता नाम) रिकॉर्डसेट की कुंजी है मान लीजिए कि आप दो शीर्ष सप्ताह उसी मूल्यों के साथ रख सकते हैं और आपके पास नल नहीं है यह समाधान में से एक हो सकता है:

  SQL & gt; टी के साथ (आईडी, कोड, सप्ताह 1, सप्ताह 2, सप्ताह 3, सप्ताह 4) 2 (3 का चयन करें 1, 'ए', 10, 15, 11, 8 दोहरी संघ से सभी 4 चुनें 2, 'बी', 7, 4, 2 , दोहरी यूनियन से 9 सभी 5 चुनें 3, 'सी', 3, 3, 1, 0 दोहरी 6) 7 आईडी चुनें, अधिकतम, अधिकतम (सप्ताह) पहले_टॉप, न्यूनतम (सप्ताह) next_top से (8 चयन आईडी, कोड, Row_number () से अधिक (आईडी द्वारा विभाजन, सप्ताह के अंत तक कोड ऑर्डर) rnk, सप्ताह 9 से (10 चयन करें t.id, t.code, 11 decode (r.rn, 1, week1,2, week2,3, week3, 4, हफ्ते 4) सप्ताह में 12 से, 13 (स्तर से जुड़ने के लिए दोहरे कनेक्शन से रावेनम आरएन का चयन करें; = 4) आर 14)) 15 जहां आरएनसी में (1,2) 16 समूह आईडी आईडी, कोड 17 / आईडी सी एफआईआरएसटीईटीओईएक्सटीओपी - --------- - ---------- ---------- 3 सी 3 3 1 एक 15 11 2 बी 9 7   

यदि आपके पास सप्ताह में गैर-रिक्त और भिन्न मान हैं तो आप कुछ ऐसा उपयोग कर सकते हैं:

  SQL & gt; टी के साथ (आईडी, कोड, सप्ताह 1, सप्ताह 2, सप्ताह 3, सप्ताह 4) 2 (3 का चयन करें 1, 'ए', 10, 15, 11, 8 दोहरी संघ से सभी 4 चुनें 2, 'बी', 7, 4, 2 , दोहरी यूनियन से 9 सभी 5 चुनें 3, 'सी', 3, 2, 1, दोहरी 6 से) 7 चुनिंदा आईडी, कोड 8, सबसे बड़ा (सप्ताह 1, सप्ताह 2, सप्ताह 3, सप्ताह 4) पहले_टॉप 9, सबसे बड़ा (10 मामला सप्ताह 1 और लेफ्टिनेंट; सबसे बड़ा (सप्ताह 1, सप्ताह 2, सप्ताह 3, सप्ताह 4) सप्ताह 1 और -1 ई 28 अंत, 11 मामले जब सप्ताह 2 और लेफ्टिनेंट; सबसे बड़ा (सप्ताह 1, सप्ताह 2, सप्ताह 3, सप्ताह 4) तो सप्ताह 2 दूसरा -1 ई 28 अंत, 12 मामले जब सप्ताह 3 और लेफ्टिनेंट; (सप्ताह 1, सप्ताह 2, सप्ताह 3, सप्ताह 4) तो सप्ताह 3 और -1 ई 28 अंत, 13 मामले जब सप्ताह 4 और लेफ्टिनेंट; सबसे बड़ा (सप्ताह 1, सप्ताह 2, सप्ताह 3, सप्ताह 4), तो सप्ताह 4 और -1e 28 अंत 14) दूसरे स्थान 15 टी 16 / आईडी से सी FIRST_TOP SECOND_TOP ---------- - ---------- ---------- 1 एक 15 11 2 बी 9 7 3 सी 3 2   

लेकिन सही समाधान प्राप्त करने के लिए अधिक विवरण आवश्यक हैं।

Comments

Popular posts from this blog

sql - Return Function using Cursor -

sql server - How to use pivot in this table -

javascript - Is there any way to add a new parameter to a function programmatically? -