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

MYSQL 5.1 में @DECLARE का उपयोग करना

MySQL में पिवट नहीं है फ़ंक्शन ताकि आपको CASE के साथ एक समग्र फ़ंक्शन का उपयोग करके डेटा को पंक्तियों से कॉलम में स्थानांतरित करना होगा अभिव्यक्ति:

select 
  sum(case when tt.type = 'UnitTest' then 1 else 0 end) UnitTest,
  sum(case when tt.type = 'WebTest' then 1 else 0 end) WebTest
from test t
inner join test_type tt
  on t.test_type = tt.id

देखें SQL Fiddle with Demo

यदि आपके पास अज्ञात संख्या में types होने जा रहे हैं कि आप कॉलम में कनवर्ट करना चाहते हैं, आप गतिशील SQL उत्पन्न करने के लिए तैयार कथन का उपयोग कर सकते हैं:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'sum(CASE WHEN tt.type = ''',
      type,
      ''' THEN 1 else 0 END) AS `',
      type, '`'
    )
  ) INTO @sql
FROM test_type;

SET @sql 
  = CONCAT('SELECT ', @sql, ' 
            from test t
            inner join test_type tt
              on t.test_type = tt.id');

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. XAMPP/MySQL:सिंगल-टेबल टेबलस्पेस फ़ाइल नहीं खोल सका .\mysql\innodb_index_stats.ibd MySQL के पुनरारंभ होने के बाद

  2. PHP त्रुटि प्राप्त करना चेतावनी:fputcsv () पैरामीटर 2 को सरणी होने की अपेक्षा करता है

  3. लाइन 1 . पर '■/' के पास mysqldump फ़ाइल ERROR 1064 (42000) आयात करते समय

  4. MySQL में एक अद्वितीय कुंजी के रूप में स्तंभों के समूह का उपयोग करना

  5. बिना प्राथमिक कुंजी वाली तालिका में डुप्लिकेट पंक्तियों को हटा दें