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

MySQL कॉलम के रूप में एकाधिक पंक्तियों में शामिल हों

एक INNER JOIN आपकी आवश्यकताओं को पूरा करेगा। MySQL का कोई PIVOT नहीं है आपके द्वारा फ़ंक्शन अभी भी CASE . का उपयोग करके इसका अनुकरण कर सकता है और MAX() समारोह।

SELECT  a.ID, a.NAME,
        MAX(CASE WHEN b.Race_Number = 1 THEN b.Place ELSE NULL END) Race1,
        MAX(CASE WHEN b.Race_Number = 2 THEN b.Place ELSE NULL END) Race2,
        MAX(CASE WHEN b.Race_Number = 3 THEN b.Place ELSE NULL END) Race3
FROM    Table1 a
        INNER JOIN Table2 b
            ON a.ID = b.ID
GROUP   BY a.ID, a.Name

लेकिन अगर आपके पास RACE का अनजान नंबर है , फिर एक DYNAMIC SQL अधिक पसंद किया जाता है।

SET @sql = NULL;
SELECT
    GROUP_CONCAT(DISTINCT
    CONCAT('MAX(CASE WHEN b.Race_Number = ', Race_Number,
      ' THEN b.Place END) AS ', CONCAT('`Race', Race_Number, '`'))
    ) INTO @sql
FROM Table2;

SET @sql = CONCAT('SELECT s.Student_name, ', @sql, ' 
                   FROM Table1 a
                   LEFT JOIN Table2 b 
                        ON ON a.ID = b.ID
                   GROUP   BY a.ID, a.Name');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL अपडेट कॉलम केवल तभी जब वैल्यू खाली न हो

  2. MySQL इनर जॉइन एलियास

  3. तालिका की प्राथमिक कुंजी खोजने के लिए SQL क्वेरी?

  4. त्रुटि संदेश:थ्रेड मुख्य org.hibernate.HibernateException में अपवाद:स्टैक्स स्ट्रीम तक पहुँचने में त्रुटि

  5. कर्ल और पीएचपी 1 प्रदर्शित कर रहा है