এটি মুলত হয় একটি পিভট টেবিল।
এটি কীভাবে অর্জন করা যায় তার একটি সুন্দর টিউটোরিয়াল এখানে পাওয়া যাবে: http://www.artfulsoftware.com/infotree/qrytip.php?id=78
আমি এই পোস্টটি পড়ার পরামর্শ দিচ্ছি এবং এই সমাধানটি আপনার প্রয়োজনের সাথে খাপ খাইয়ে নেব।
হালনাগাদ
উপরের লিঙ্কটি বর্তমানে আর উপলভ্য না হওয়ার পরে আমি এখানে মাইএসকিএল পিভট উত্তরের জন্য অনুসন্ধান করা আপনার সকলের জন্য কিছু অতিরিক্ত তথ্য সরবরাহ করতে বাধ্য বোধ করি। এটিতে সত্যই প্রচুর পরিমাণে তথ্য ছিল এবং আমি সেখান থেকে এখানে সবকিছু রাখব না (আরও বেশি কিছু যেহেতু আমি কেবল তাদের বিশাল জ্ঞানটি অনুলিপি করতে চাই না), তবে কীভাবে পাইভটকে মোকাবেলা করতে হবে সে সম্পর্কে আমি কিছু পরামর্শ দেব প্রথম স্থানটিতে প্রশ্ন জিজ্ঞাসা করা পেকু থেকে উদাহরণ সহ সাধারণভাবে বর্গক্ষেত্রের উপায়ে টেবিলগুলি।
সম্ভবত লিঙ্কটি আবার ফিরে আসবে, আমি এটির জন্য নজর রাখব।
স্প্রেডশিট উপায় ...
অনেকে এই উদ্দেশ্যে এমএসএসেক্সেল, ওপেনঅফিস বা অন্যান্য স্প্রেডশিট-সরঞ্জামগুলির মতো একটি সরঞ্জাম ব্যবহার করেন। এটি একটি বৈধ সমাধান, কেবল ওখানকার ডেটা অনুলিপি করুন এবং এটি সমাধান করার জন্য জিইউআইয়ের প্রস্তাব দেওয়া সরঞ্জামগুলি ব্যবহার করুন।
তবে ... এটি প্রশ্ন ছিল না, এবং এটি স্প্রেডশিটে কীভাবে ডেটা পাবেন, সমস্যাযুক্ত স্কেলিং এবং এর মতো কিছু অসুবিধাও হতে পারে।
এসকিউএল উপায় ...
দেওয়া তার টেবিলটি দেখতে এমন কিছু দেখাচ্ছে:
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
, PRINT x pages
) শর্তের সাথে সাদৃশ্যপূর্ণ। মূল গ্রুপিং হচ্ছে company_name
।
শর্তগুলি সেট আপ করার জন্য এটি বরং- CASE
স্টেটমেন্ট ব্যবহারের জন্য চিৎকার করে । কিছু গ্রুপ জন্য, ভাল, ব্যবহার করুন ... GROUP BY
।
এই পিভটটি সরবরাহকারী বেসিক এসকিউএল এর মতো কিছু দেখতে পারে:
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`;
এটি খুব দ্রুত কাঙ্ক্ষিত ফলাফল সরবরাহ করা উচিত। এই পদ্ধতির জন্য বড় ক্ষতি, আপনার পিভট টেবিলটিতে আপনি আরও সারি চান, আপনার এসকিউএল স্টেটমেন্টে আপনাকে আরও শর্তাবলী সংজ্ঞায়িত করতে হবে।
এটির সাথেও মোকাবিলা করা যায়, অতএব লোকেরা প্রস্তুত বিবৃতি, রুটিন, কাউন্টার এবং এগুলি ব্যবহার করার প্রবণতা রাখে।
এই বিষয় সম্পর্কে কিছু অতিরিক্ত লিঙ্ক: