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

Oracle SQL:ROWNUM द्वारा फ़िल्टरिंग परिणाम नहीं लौटा रहा है जब इसे करना चाहिए

आप rownum . का उपयोग नहीं कर सकते इस तरह। rownum गणना की जाती है जब मान वास्तव में क्वेरी से लौटाए जाते हैं - केवल जब एक पंक्ति वापस आती है। इसलिए, कथन:

where rownum = 2

कभी भी कोई मान नहीं लौटाएगा, क्योंकि "2" से पहले "1" होना आवश्यक है।

यदि आप Oracle 12+ का उपयोग कर रहे हैं, तो आप offset . का उपयोग कर सकते हैं क्लॉज के साथ fetch first <n> rows only . पुराने संस्करणों में, आप row_number() over () . का उपयोग कर सकते हैं कॉलम के रूप में एक पंक्ति संख्या की गणना करने के लिए और where . में इसका उपयोग करें ।

असल में, आपकी क्वेरी पहले से ही एक सबक्वेरी का उपयोग करती है, इसलिए आप कुछ ऐसा कर सकते हैं:

select *
from (select . . .,
             row_number() over (order by Request_ID, Actual_Start_Date) as rn
      . . .
     ) t
WHERE rn < (1000000 * to_Number(:X) and)
      rn >= (1000000 * (to_Number(:X)-1))


  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. डेटाबेस SQL ​​oracle से ब्लॉब को सहेजने और प्राप्त करने में त्रुटि

  3. SQL क्वेरी DIFFDATE अमान्य पहचानकर्ता लौटाता है

  4. इसके पैरामीटर नामों और प्रकारों के लिए संग्रहीत कार्यविधि को क्वेरी करें

  5. पीएल/एसक्यूएल का उपयोग करके पीडीएफ रिपोर्ट कैसे बनाएं