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

Mysql कॉलम को पंक्ति में बदलें (पिवट टेबल)

आपको जो करना है वह पहले डेटा को अनपिवट करना है और फिर उसे पिवट करना है। लेकिन दुर्भाग्य से MySQL में ये फ़ंक्शन नहीं हैं, इसलिए आपको UNION ALL . का उपयोग करके उन्हें दोहराने की आवश्यकता होगी अनपिवट के लिए क्वेरी और CASE . के साथ एक समग्र फ़ंक्शन धुरी के लिए।

अनपिवट या UNION ALL टुकड़ा आपके col1, col2, आदि से डेटा लेता है और इसे कई पंक्तियों में बदल देता है:

select id, month, col1 value, 'col1' descrip
from yourtable
union all
select id, month, col2 value, 'col2' descrip
from yourtable
union all
select id, month, col3 value, 'col3' descrip
from yourtable
union all
select id, month, col4 value, 'col4' descrip
from yourtable

देखें SQL Fiddle with Demo .

परिणाम:

|  ID | MONTH |  VALUE | DESCRIP |
----------------------------------
| 101 |   Jan |      A |    col1 |
| 102 |   feb |      C |    col1 |
| 101 |   Jan |      B |    col2 |
| 102 |   feb |      A |    col2 |
| 101 |   Jan | (null) |    col3 |
| 102 |   feb |      G |    col3 |
| 101 |   Jan |      B |    col4 |
| 102 |   feb |      E |    col4 |

इसके बाद आप इसे एक सबक्वेरी में लपेटते हैं ताकि समग्र और CASE . लागू हो सके इसे अपने इच्छित प्रारूप में बदलने के लिए:

select descrip, 
  max(case when month = 'jan' then value else 0 end) jan,
  max(case when month = 'feb' then value else 0 end) feb
from
(
  select id, month, col1 value, 'col1' descrip
  from yourtable
  union all
  select id, month, col2 value, 'col2' descrip
  from yourtable
  union all
  select id, month, col3 value, 'col3' descrip
  from yourtable
  union all
  select id, month, col4 value, 'col4' descrip
  from yourtable
) src
group by descrip

देखें SQL Fiddle with डेमो

नतीजा यह है:

| DESCRIP | JAN | FEB |
-----------------------
|    col1 |   A |   C |
|    col2 |   B |   A |
|    col3 |   0 |   G |
|    col4 |   B |   E |


  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 डेटाबेस सुरक्षित है

  2. MySQL PHP असंगति

  3. क्या COUNT(*) हमेशा परिणाम देता है?

  4. बेस्ट मैच द्वारा MySQL ऑर्डर

  5. मैं MySQL में विशेष वर्णों से कैसे बचूँ?