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

Mysql में डायनेमिक कॉलम चुनें

दुर्भाग्य से MySQL में PIVOT नहीं है फ़ंक्शन जो मूल रूप से आप करने की कोशिश कर रहे हैं। तो आपको CASE . के साथ एक समग्र फ़ंक्शन का उपयोग करने की आवश्यकता होगी कथन:

SELECT type,
  sum(case when criteria_id = 'env' then result end) env,
  sum(case when criteria_id = 'gas' then result end) gas,
  sum(case when criteria_id = 'age' then result end) age
FROM results
group by type

देखें SQL Fiddle with Demo

अब यदि आप इसे गतिशील रूप से करना चाहते हैं, जिसका अर्थ है कि आप समय से पहले कॉलम को स्थानांतरित करने के बारे में नहीं जानते हैं, तो आपको निम्नलिखित लेख की समीक्षा करनी चाहिए:

डायनामिक पिवट टेबल (पंक्तियों को कॉलम में बदलना)

आपका कोड इस तरह दिखेगा:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'SUM(IF(CRITERIA_ID = ''',
      CRITERIA_ID,
      ''', RESULT, NULL)) AS ',
      CRITERIA_ID
    )
  ) INTO @sql
FROM
  Results;
SET @sql = CONCAT('SELECT type, ', @sql, ' FROM Results GROUP BY type');

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

देखें SQL Fiddle with Demo




  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 CURRENT_TIMESTAMP डिफ़ॉल्ट के रूप में

  2. php दिनांक को mysql प्रारूप में बदलें

  3. Mysql Concat दो कॉलम LIKE . के साथ खोजते समय

  4. MySQL एकाधिक मामले के साथ एक प्रश्न में मायने रखता है

  5. मेकटाइम () उदाहरण – MySQL