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

पंक्तियों की गतिशील संख्या में पंक्तियों को पिवट करके MySQL में एक सारांश दृश्य बनाएं

आपको टेबल को पिवट करने की जरूरत है लेकिन mysql में पिवट की ऐसी कोई कार्यक्षमता नहीं है

इसलिए हमें इसकी कार्यक्षमता को दोहराने की आवश्यकता है

संपादित

Select 
  group_concat(
    DISTINCT 
       if(year is null,
          CONCAT('max(if (year is null, state, 0)) as ''NULL'' '),
          CONCAT('max(if (year=''', year, ''', state, 0)) as ''',year, ''' '))
    ) into @sql from tbl join (SELECT @sql:='')a;
set @sql = concat('select company_name, ', @sql, 'from tbl group by company_name;');
PREPARE stmt FROM @sql;
EXECUTE stmt;

परिणाम

| COMPANY_NAME | 2008 | 2009 | 2010 | NULL |
--------------------------------------------
|     companyA |    1 |    0 |    0 |    0 |
|     companyB |    0 |    2 |    0 |    0 |
|     companyC |    0 |    0 |    3 |    3 |

SQL FIDDLE

आपकी समस्या को हल करने के लिए 2 दृष्टिकोण हैं 1. प्रत्येक वर्ष के लिए मामला बनाएं, जो आपके मामले में संभव नहीं है क्योंकि हम वर्ष 2 के साथ काम कर रहे हैं। क्वेरी को गतिशील रूप से उत्पन्न करें ताकि हमें आपकी आवश्यकता के अनुसार उचित कॉलम मिलें।

मैंने दूसरे समाधान के अनुसार समाधान दिया है जहां मैं क्वेरी उत्पन्न कर रहा हूं और इसे @sql . में संग्रहीत कर रहा हूं चर। फिडेल में मैंने @sql . की सामग्री को प्रिंट किया है इसे क्रियान्वित करने से पहले।

select company_name, max(if (year='2008', state, 0)) as '2008' ,max(if (year='2009', state, 0)) as '2009' ,max(if (year='2010', state, 0)) as '2010' ,max(if (year is null, state, 0)) as 'NULL' from tbl group by company_name; 

group_concat() के बारे में अधिक जानकारी के लिए लिंक देखेंGROUP_CONCAT औरउपयोगकर्ता परिभाषित चर

आशा है कि यह मदद करता है..



  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 Join में मिलाएं

  2. उपयोगकर्ता परिभाषित संग्रहीत प्रक्रिया को चुनिंदा कथन से कॉल करना mysql

  3. UNION के अंदर ORDER BY का उपयोग कैसे करें

  4. इस त्रुटि को कैसे ठीक करें PHP घातक त्रुटि:केक सेंकना कंसोल में अपरिभाषित फ़ंक्शन mysql_query () पर कॉल करें

  5. नेस्टेड कास्ट काम नहीं कर रहा