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

डायनामिक कॉलम को पंक्तियों में स्थानांतरित करना

MySQL में UNPIVOT फ़ंक्शन नहीं है, लेकिन आप UNION ALL का उपयोग करके अपने कॉलम को पंक्तियों में बदल सकते हैं ।

मूल सिंटैक्स है:

select id, word, qty
from
(
  select id, 'abc' word, abc qty
  from yt
  where abc > 0
  union all
  select id, 'brt', brt
  from yt
  where brt > 0
) d
order by id;

आपके मामले में, आप कहते हैं कि आपको गतिशील कॉलम के समाधान की आवश्यकता है। यदि ऐसा है, तो आपको गतिशील SQL उत्पन्न करने के लिए तैयार कथन का उपयोग करने की आवश्यकता होगी:

SET @sql = NULL;

SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'select id, ''',
      c.column_name,
      ''' as word, ',
      c.column_name,
      ' as qty 
      from yt 
      where ',
      c.column_name,
      ' > 0'
    ) SEPARATOR ' UNION ALL '
  ) INTO @sql
FROM information_schema.columns c
where c.table_name = 'yt'
  and c.column_name not in ('id')
order by c.ordinal_position;

SET @sql 
  = CONCAT('select id, word, qty
           from
           (', @sql, ') x  order by 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. एक SQL क्वेरी के साथ एकाधिक गणना कैसे प्राप्त करें?

  2. JSON_REPLACE () - MySQL में JSON दस्तावेज़ में मान बदलें

  3. JavaFX MySQL कनेक्शन उदाहरण कृपया

  4. MySQL कार्यक्षेत्र के साथ दृश्य डेटाबेस निर्माण

  5. हर बोली समस्या से पहले स्लैश