यह मूल रूप से है एक पिवट टेबल।
इसे कैसे प्राप्त किया जाए इस पर एक अच्छा ट्यूटोरियल यहां पाया जा सकता है:http:// www.artfulsoftware.com/infotree/qrytip.php?id=78
मैं इस पोस्ट को पढ़ने और इस समाधान को अपनी आवश्यकताओं के अनुसार अनुकूलित करने की सलाह देता हूं।
अपडेट करें
ऊपर दिए गए लिंक के वर्तमान में उपलब्ध नहीं होने के बाद, मैं आप सभी के लिए कुछ अतिरिक्त जानकारी प्रदान करने के लिए बाध्य महसूस करता हूं, जो यहां पर mysql पिवट उत्तरों की खोज कर रहे हैं। इसमें वास्तव में बड़ी मात्रा में जानकारी थी, और मैं वहां से सब कुछ यहां नहीं डालूंगा (और भी अधिक क्योंकि मैं उनके विशाल ज्ञान की प्रतिलिपि नहीं बनाना चाहता), लेकिन मैं कुछ सलाह दूंगा कि कैसे धुरी से निपटें आम तौर पर पेकू से उदाहरण के साथ एसक्यूएल तरीके से टेबल करता है जिसने पहली बार सवाल पूछा था।
हो सकता है कि लिंक जल्द ही वापस आए, मैं इस पर नज़र रखूंगा।
स्प्रेडशीट का तरीका...
बहुत से लोग इस उद्देश्य के लिए MSExcel, OpenOffice या अन्य स्प्रेडशीट-टूल्स जैसे टूल का उपयोग करते हैं। यह एक वैध समाधान है, बस वहां पर डेटा कॉपी करें और इसे हल करने के लिए GUI द्वारा ऑफ़र किए जाने वाले टूल का उपयोग करें।
लेकिन... यह सवाल नहीं था, और इससे कुछ नुकसान भी हो सकते हैं, जैसे डेटा को स्प्रेडशीट में कैसे लाया जाए, समस्यात्मक स्केलिंग आदि।
एसक्यूएल तरीका...
देखते हुए उसकी टेबल कुछ इस तरह दिखती है:
CREATE TABLE `test_pivot` (
`pid` bigint(20) NOT NULL AUTO_INCREMENT,
`company_name` varchar(32) DEFAULT NULL,
`action` varchar(16) DEFAULT NULL,
`pagecount` bigint(20) DEFAULT NULL,
PRIMARY KEY (`pid`)
) ENGINE=MyISAM;
अब उसकी वांछित तालिका देखें:
company_name EMAIL PRINT 1 pages PRINT 2 pages PRINT 3 pages
-------------------------------------------------------------
CompanyA 0 0 1 3
CompanyB 1 1 2 0
पंक्तियाँ (EMAIL
, प्रिंट x पृष्ठ
) शर्तों के समान। मुख्य समूह company_name
. द्वारा है ।
शर्तों को सेट करने के लिए यह केस
-बयान। किसी चीज़ के आधार पर समूह बनाने के लिए, उपयोग करें ... GROUP BY
।
इस धुरी को प्रदान करने वाला मूल SQL कुछ इस तरह दिख सकता है:
SELECT P.`company_name`,
COUNT(
CASE
WHEN P.`action`='EMAIL'
THEN 1
ELSE NULL
END
) AS 'EMAIL',
COUNT(
CASE
WHEN P.`action`='PRINT' AND P.`pagecount` = '1'
THEN P.`pagecount`
ELSE NULL
END
) AS 'PRINT 1 pages',
COUNT(
CASE
WHEN P.`action`='PRINT' AND P.`pagecount` = '2'
THEN P.`pagecount`
ELSE NULL
END
) AS 'PRINT 2 pages',
COUNT(
CASE
WHEN P.`action`='PRINT' AND P.`pagecount` = '3'
THEN P.`pagecount`
ELSE NULL
END
) AS 'PRINT 3 pages'
FROM test_pivot P
GROUP BY P.`company_name`;
यह वांछित परिणाम बहुत तेजी से प्रदान करना चाहिए। इस दृष्टिकोण के लिए प्रमुख नकारात्मक पक्ष, आप अपनी पिवट तालिका में जितनी अधिक पंक्तियाँ चाहते हैं, उतनी ही अधिक स्थितियों को आपको अपने SQL कथन में परिभाषित करने की आवश्यकता होगी।
इससे भी निपटा जा सकता है, इसलिए लोग तैयार स्टेटमेंट, रूटीन, काउंटर आदि का उपयोग करते हैं।
इस विषय के बारे में कुछ अतिरिक्त लिंक:
- http://anothermysqldba.blogspot. de/2013/06/pivot-tables-example-in-mysql.html
- http://www.codeproject। com/Articles/363339/क्रॉस-सारणी-पिवट-टेबल्स-साथ-MySQL
- http://datacharmer.org/downloads/pivot_tables_mysql_5.pdf
- https://codingsight.com/pivot-tables-in-mysql/ए>