MySQL-এ একই গ্রুপের (যেমন company_name) একাধিক রোকে একটি রোতে কনভার্ট করতে (pivot) CASE WHEN এবং MAX() এগгреগেশন ব্যবহার করা হয়।
উদাহরণ
টেবিল তৈরি:
CREATE TABLE demo68 (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
company_name VARCHAR(50),
employee_name VARCHAR(50),
country_name VARCHAR(50)
);
INSERT INTO demo68(company_name, employee_name, country_name) VALUES
('Google', 'John', 'US'), ('Google', 'Bob', 'UK'), ('Google', 'David', 'AUS');
টেবিলের ডেটা:
+----+--------------+---------------+--------------+ | id | company_name | employee_name | country_name | +----+--------------+---------------+--------------+ | 1 | Google | John | US | | 2 | Google | Bob | UK | | 3 | Google | David | AUS | +----+--------------+---------------+--------------+
কোয়েরি (Pivot)
SELECT
company_name,
MAX(CASE WHEN country_name = 'US' THEN employee_name END) AS US_Employee_Name,
MAX(CASE WHEN country_name = 'UK' THEN employee_name END) AS UK_Employee_Name,
MAX(CASE WHEN country_name = 'AUS' THEN employee_name END) AS AUS_Employee_Name
FROM demo68
GROUP BY company_name;
আউটপুট
+--------------+------------------+------------------+-------------------+ | company_name | US_Employee_Name | UK_Employee_Name | AUS_Employee_Name | +--------------+------------------+------------------+-------------------+ | Google | John | Bob | David | +--------------+------------------+------------------+-------------------+
ব্যাখ্যা:
CASE WHEN country_name = 'US' THEN employee_name END- US হলে employee_name, অন্যথায় NULL।MAX(...)- NULL বাদ দিয়ে সর্বোচ্চ মান নেয় (এখানে শুধু একটি নন-নাল মান থাকে)।GROUP BY company_name- কোম্পানির প্রতি এক রো।
এটি কন্ডিশনাল এগгреগেশন বা "পিভট" টেকনিক। MySQL-এ PIVOT কীওয়ার্ড নেই, এই পদ্ধতিই স্ট্যান্ডার্ড।