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

WM_CONCAT को लिस्टैग में बदलें

LISTAGG . का मूल सिंटैक्स है:

LISTAGG(col_name_to_be_aggregated, ',') WITHIN GROUP (ORDER BY col)

आपके मामले में, चूंकि आपके पास परिणाम के रूप में एक उप-क्वेरी है जो WM_CONCAT . पर सेट है , आप उसी उप-क्वेरी को col_name_to_be_aggregated के स्थान पर रख सकते हैं LISTAGG . में ।

मुझे लगता है कि आप सभी बदलें . से भी छुटकारा पा सकते हैं फ़ंक्शन, चूंकि, LISTAGG सीमांकक . को स्वीकार कर सकता है तुम्हारी पसन्द का।

कोशिश करें,

LISTAGG
(
  CASE
  WHEN ROW_NUMBER() OVER (PARTITION BY product_id,
                                       product_detail_set_id,
                                       registration_id,
                                       product_family_id,
                                       application_id,
                                       package_Set_id, 
                                       legal_status 
                                       order by packset_country)=1 THEN
    legal_status
  ELSE
    NULL
  END), ',') WITHIN GROUP (ORDER BY required_col)

साथ ही, मैं यह बताना चाहूंगा कि आपको 12c में LISTAGG में जाने की आवश्यकता क्यों है। चूंकि t को नवीनतम 12c संस्करण से हटा दिया गया है। इसलिए, कोई भी एप्लिकेशन जो WM_CONCAT फ़ंक्शन पर निर्भर रहा है, एक बार 12c में अपग्रेड होने के बाद काम नहीं करेगा। पढ़ें WM_CONCAT का उपयोग क्यों नहीं करें Oracle में काम करता है?

11g से पहले रिलीज़ 2 के लिए, आप LISTAGG का उपयोग नहीं कर सकते। कई स्ट्रिंग एकत्रीकरण तकनीकें हैं, मेरे उत्तर पर एक नज़र डालें यहां .

Oracle String Aggregation Techniques के बारे में अधिक जानकारी



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. OraOLEDB का उपयोग करने के लिए मुझे क्या स्थापित करने की आवश्यकता है?

  2. दो टेबल पर चलने वाला ट्रिगर बनाना

  3. ADO.NET से Oracle को कॉल करते समय एकाधिक चयन कथनों को बैचें

  4. रॉ(16) कॉलम में यूयूआईडी कैसे डालें

  5. थोड़े बदलते मॉडल के साथ कई डेटाबेस। मैं एंटिटी फ्रेमवर्क को रन-टाइम पर कॉलम हटाने की अनुमति कैसे दूं?