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

किसी अन्य कॉलम के मान के आधार पर सेल में LISTAGG मान प्रदर्शित करना

आपका अपडेट इसके बराबर है।

UPDATE schedules s 
SET    days = (SELECT LISTAGG(day, ', ') 
                        within group ( ORDER BY day_order ) 
               FROM   days d 
               WHERE  d.schedule IN ( 'Weekend', 'Weekday' ) 
                      AND d.schedule = s.schedule 
               GROUP  BY d.schedule ) ;

लेकिन, मैं अनुशंसा नहीं करूंगा यह। अभिलेखों को अल्पविराम द्वारा अलग किए गए मानों के रूप में संग्रहीत करना भविष्य में आपके लिए समस्याएँ पैदा करने के लिए बाध्य है। केवल नीचे की तरह एक क्वेरी का उपयोग करके परिणाम प्रदर्शित करने के लिए इसका उपयोग करें। यह मानता है कि आपकी दिन तालिका में, प्रत्येक दिन के लिए अद्वितीय पंक्तियाँ हैं। यदि डुप्लिकेट हैं, तो join यह दिनों से निर्धारित विशिष्ट परिणाम के लिए है।

SELECT d.id, 
       d.schedule, 
       LISTAGG(s.day, ', ') 
         within GROUP ( ORDER BY d.day_order ) 
FROM   days d 
       join schedules s 
         ON ( d.schedule = s.schedule ) 
WHERE  d.schedule IN ( 'Weekend', 'Weekday' ) 
GROUP  BY d.id, 
          d.schedule 


  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. जेपीए:java.lang.IllegalArgumentException:एक इकाई नहीं

  5. नामांकित क्वेरी, मूल क्वेरी या मानदंड API