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

विकल्प द्वारा विभाजित स्कूप विकल्प द्वारा विभाजित में एक व्युत्पन्न कॉलम का उपयोग करते समय त्रुटि दे रहा है

पंक्ति_संख्या गणना को लपेटने के लिए सबक्वायरी का उपयोग करें, फिर विभाजित कॉलम में व्युत्पन्न कॉलम का उपयोग करें।

   --query "select col1, ... colN, RANGEGROUP 
               from (select t.*, row_number() OVER (order by t.item_id ) AS RANGEGROUP
                      from table t ) s 
              where 1=1 and \$CONDITIONS"

row_number नियतात्मक होना चाहिए, इसका मतलब है कि जब कई बार निष्पादित किया जाता है, तो उसे सभी पंक्तियों के लिए समान संख्या निर्दिष्ट करनी चाहिए। क्या हो सकता है यदि OVER में ORDER BY में अद्वितीय कॉलम या संयोजन न हो:row_number एक ही पंक्तियों के लिए अलग-अलग नंबर लौटा सकते हैं। और यदि आप इसे स्प्लिट-बाय में उपयोग कर रहे हैं, तो आपको डुप्लिकेशन मिलेगा क्योंकि एक ही पंक्ति स्प्लिट रेंज 1 में हो सकती है, 1-100 कहें, मैपर 2 में स्कूप रेंज 2 के लिए फ़िल्टर के साथ एक ही क्वेरी निष्पादित करेगा, कहें (101-200) ) वही पंक्ति उस श्रेणी में भी दिखाई दे सकती है। समानांतर में स्प्लिट रेंज प्राप्त करने के लिए स्कूप अलग-अलग कंटेनरों (मैपर) में एक ही क्वेरी को अलग-अलग कंडीशन के साथ चलाता है।

यदि Id int है (और समान रूप से वितरित होने पर बहुत बेहतर है), तो उस ID का उपयोग करें। आपको STRING कॉलम होने पर row_number की आवश्यकता क्यों हो सकती है। इसे पढ़ें:https://stackoverflow.com/a/37389134/2700344 , स्प्लिट-कॉलम जरूरी नहीं कि एक PK हो




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle कनेक्शन पूल क्लास

  2. JAXB में JAXBElement क्यों और कब आवश्यक है?

  3. लाइन के लिए नियमित अभिव्यक्ति अलग-अलग लंबे शब्दों को अलग करती है

  4. INSERT ट्रिगर के बाद Oracle से Windows सेवा को आमंत्रित करें

  5. एसक्यूएल ट्रंक/ग्रुप/ऑर्डर तारीखों (दिन/महीने/तिमाही/वर्ष) के साथ बिना किसी डेटा के सम स्किप तिथियों के साथ