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

डायनेमिक पिवट टेबल कॉलम mysql

एक चीज़ को छोड़कर आपका डायनेमिक SQL ठीक है। इसमें एक अस्पष्ट कॉलम है project_id अपने दूसरे बाएं जुड़ने पर, बस इसे pt.project_id . से बदलें या trd.project_id और यह वांछित परिणाम देगा।

SET @sql = NULL;
    SELECT
      GROUP_CONCAT(DISTINCT
        CONCAT(
          'max(case when dc.demographic_name = ''',
          demographic_name,
          ''' then trd.demographic_value end) AS ',
          replace(demographic_name, ' ', '')
        )
      ) INTO @sql
    from demographic_categories;

SET @sql = CONCAT('SELECT pt.test_id, pt.group_id,
', @sql,'
from test_demographic_requirements trd
LEFT JOIN demographic_categories dc ON trd.demographic_id = dc.demographic_id
LEFT JOIN project_tests pt ON pt.test_id = trd.test_id and pt.project_id =1
group by pt.test_id;');

PREPARE stmt FROM @sql;
EXECUTE stmt;

DEALLOCATE PREPARE stmt;

मैंने इसे एक रेक्सटेस्टर पर चलाया। यहां लिंक दिया गया है:dynamic_pivot_test




  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 में UDF प्रदर्शन

  2. odbc का उपयोग करके asp.net c# और Mysql में क्वेरी समस्या अपडेट करें

  3. django उत्पादन पर डेटाबेस माइग्रेशन

  4. MySQL का उपयोग करके मूल SQL क्वेरीज़ सीखें

  5. सिद्धांत में सिंगल कोट्स से कैसे बचें