Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

जटिल सम्मिलित प्रश्नों के लिए ORACLE में OFFSET और LIMIT लागू करें?

आप विश्लेषणात्मक कार्यों का उपयोग कर सकते हैं जैसे ROW_NUMBER() Oracle 11g . के लिए एक सबक्वेरी के भीतर यह मानते हुए कि OFFSET 3 LIMIT 8 को कैप्चर करने के लिए आपको पंक्तियों को 3 और 8 के बीच रैंक करने की आवश्यकता है Oracle DB के भीतर तर्क (वास्तव में वे खंड संस्करण 12c+ के लिए शामिल हैं ), जब भी परिणाम CREATE_DATE . द्वारा समूहीकृत किया जाना चाहिए और ID . द्वारा आदेश दिया गया विभागों के :

SELECT q.*
  FROM (SELECT DEPT.ID rowobjid,
               DEPT.CREATOR createdby,
               DEPT.CREATE_DATE createddate,
               DEPT.UPDATED_BY updatedby,
               DEPT.LAST_UPDATE_DATE updateddate,
               DEPT.NAME name,
               DEPT.STATUS status,
               statusT.DESCR statusdesc,
               REL.ROWID_DEPT1 rowidDEPT1,
               REL.ROWID_DEPT2 rowidDEPT2,
               DEPT2.DEPT_FROM_VAL parentcid,
               DEPT2.NAME parentname,
               ROW_NUMBER() OVER (PARTITION BY DEPT.CREATE_DATE ORDER BY DEPT.ID) AS rn
          FROM TEST.DEPT_TABLE DEPT
          LEFT JOIN TEST.STATUS_TABLE statusT
            ON DEPT.STATUS = statusT.STATUS
          LEFT JOIN TEST.C_REL_DEPT rel
            ON DEPT.ID = REL.ROWID_DEPT2
          LEFT JOIN TEST.DEPT_TABLE DEPT2
            ON REL.ROWID_DEPT1 = DEPT2.ID) q
 WHERE rn BETWEEN 3 AND 8;

जो बिल्कुल 6 returns लौटाता है (8-3+1) पंक्तियाँ। यदि आपको संबंध शामिल करने की आवश्यकता है (प्रत्येक निर्माण तिथि के लिए विभाग की पहचान के लिए समान मान), ROW_NUMBER() DENSE_RANK() called नामक एक अन्य विंडो फ़ंक्शन के साथ प्रतिस्थापित किया जाना चाहिए क्योंकि क्वेरी के अन्य सभी भाग समान रहते हैं। कम से कम 6 इस मामले में रिकॉर्ड वापस आ जाएंगे।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. तालिका अनुदान बनाने के साथ भी तत्काल निष्पादित करें विफल रहता है

  2. कॉलम ए में कॉलम बी के मान के साथ पंक्तियों को भरें यदि कॉलम ए में शर्त पूरी होती है

  3. पंक्ति की प्रतिलिपि बनाएँ और स्तंभों का एक छोटा उपसमूह बदलें?

  4. c3p0 को हाइबरनेट में पुराने डीबी कनेक्शन को ऑटो-रीफ्रेश करने के लिए कैसे कॉन्फ़िगर करें

  5. Oracle® SQL*Loader . के साथ SQL सर्वर डेटा सम्मिलित करना