जैसा कि पहले ही उल्लेख किया गया है, MySQL अपने आप पिवट करने के लिए नहीं बनाया गया है और यदि संभव हो तो आपको शायद कोड में पिवट करना चाहिए, लेकिन इसे छोड़कर, नीचे कुछ उदाहरण एसक्यूएल है जो आपको चाहिए। यह मानते हुए कि आपकी वास्तविक तालिका कुछ अर्थों में परिवर्तनशील है (जैसे आपके पास कितने q[x] कॉलम हैं, या आपके पास कितने सुपर_आईडी हैं), आप इसे आवश्यक SQL को गतिशील रूप से उत्पन्न और निष्पादित करने के लिए एक संग्रहीत कार्यविधि में लपेट सकते हैं।
टेस्टटेबल नाम की एक प्रारंभिक तालिका मानते हुए:
mysql> select * from testTable;
+----------+--------+------+------+
| super_id | cat_id | qa | qb |
+----------+--------+------+------+
| 1 | 1 | 5 | 5 |
| 1 | 2 | 2 | 5 |
| 1 | 3 | 3 | 4 |
| 2 | 4 | 5 | 3 |
| 2 | 5 | 3 | 4 |
| 2 | 6 | 4 | 2 |
+----------+--------+------+------+
6 rows in set (0.00 sec)
निम्नलिखित एसक्यूएल का प्रयोग करें:
SELECT
'qa' q,
SUM( CASE WHEN super_id = 1 THEN qa ELSE 0 END )/SUM( CASE WHEN super_id = 1 THEN 1 ELSE 0 END ) super_id_1,
SUM( CASE WHEN super_id = 2 THEN qa ELSE 0 END )/SUM( CASE WHEN super_id = 2 THEN 1 ELSE 0 END ) super_id_2
FROM
testTable
UNION ALL
SELECT
'qb' q,
SUM( CASE WHEN super_id = 1 THEN qb ELSE 0 END )/SUM( CASE WHEN super_id = 1 THEN 1 ELSE 0 END ) super_id_1,
SUM( CASE WHEN super_id = 2 THEN qb ELSE 0 END )/SUM( CASE WHEN super_id = 2 THEN 1 ELSE 0 END ) super_id_2
FROM
testTable
;
इस परिणाम को प्राप्त करने के लिए:
+----+------------+------------+
| q | super_id_1 | super_id_2 |
+----+------------+------------+
| qa | 3.3333 | 4.0000 |
| qb | 4.6667 | 3.0000 |
+----+------------+------------+
2 rows in set (0.00 sec)
(संपादित करें:स्वरूपण)