কম্পিউটার টিউটোরিয়াল

MySQL-এ CASE WHEN ও GROUP BY ব্যবহার করে একাধিক রো একত্রিত করা (Pivot)

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 কীওয়ার্ড নেই, এই পদ্ধতিই স্ট্যান্ডার্ড।

  1. MySQL-এ আলাদা রেকর্ড থেকে গণনা একই সারিতে প্রদর্শন করা

  2. MySQL-এ একাধিক টেক্সট রেকর্ড একসাথে जोড়া দেওয়া (GROUP_CONCAT)

  3. MySQL-এ MONTH() এবং SUM() ব্যবহার করে বর্তমান মাসের টোটাল অ্যামাউন্ট বের করা

  4. MySQL-এ LIMIT ব্যবহার করে পেজিনেশন (পরের সারি নির্বাচন)