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

Oracle SQL - N पंक्तियों के कॉलम मानों को 1 पंक्ति में N कॉलम में बदलें

यह मानते हुए कि आपको परवाह नहीं है कि विवरण किस क्रम में लौटाए गए हैं (यानी जेरेमी स्मिथ के पास Description1 ठीक उसी तरह हो सकता है या "भ्रमित" और एक Description2 "लंबा"), आपको बस पंक्ति संख्या पर पिवट करने की आवश्यकता है। यदि आप उस आदेश की परवाह करते हैं जिसमें विवरण लौटाए गए हैं, तो आप एक ORDER BY add जोड़ सकते हैं ROW_NUMBER . में विंडो फ़ंक्शन के लिए क्लॉज विश्लेषणात्मक कार्य

SELECT firstName, 
       lastName,
       MAX( CASE WHEN rn = 1 THEN description ELSE NULL END ) description1,
       MAX( CASE WHEN rn = 2 THEN description ELSE NULL END ) description2,
       MAX( CASE WHEN rn = 3 THEN description ELSE NULL END ) description3
  FROM (SELECT firstName,
               lastName,
               description,
               row_number() over (partition by lastName, firstName) rn
          FROM descriptions
               JOIN people USING (firstName, lastName)
         WHERE age >= 25)
   GROUP BY firstname, lastname

एक तरफ के रूप में, मैं उम्मीद कर रहा हूं कि आप वास्तव में एक जन्म तिथि संग्रहीत कर रहे हैं और व्यक्ति की उम्र की गणना कर रहे हैं, न कि उम्र को संग्रहीत करने और यह मानने के लिए कि लोग हर साल अपनी उम्र को अपडेट कर रहे हैं।



  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. Oracle में ट्रिगर अमान्य है

  4. dbms_output.put_line

  5. Oracle में लॉक की गई पंक्तियों को कैसे खोजें