GORAGOD.com

คำสั่ง SQL เพื่อสรุปข้อมูลที่อยู่ในรูปแบบเร็คคอร์ดหลายๆแถว ให้เป็นข้อมูลในรูปคอลัมน์

คำสั่ง SQL เพื่อสรุปข้อมูลที่อยู่ในรูปแบบเร็คคอร์ดหลายๆแถว ให้เป็นข้อมูลในรูปคอลัมน์ เช่นการสรุปจำนวนสต๊อกสินค้าขาเข้าและขาออกในรูปแบบรายเดือน

ตัวอย่างข้อมูลจากตาราง stock ซึ่งมีลักษณะเป็นเร็คคอร์ดดังรูป
ต้องการสรุปข้อมูล IN และ OUT เป็นรายเดือน สามารถเขียนคำสั่ง SQL ได้ดังนี้
SELECT
  `month`,
  SUM( IF(`status`='IN', `quantity`, NULL) ) AS `IN`,
  SUM( IF(`status`='OUT', `quantity`, NULL) ) AS `OUT`
FROM `stock`
GROUP BY `month`

ผลลัพท์
หลักการก็คือ เราจะใช้ IF() ในการคัดเลือกข้อมูล IN มาใส่คอลัมน์ IN และคัดเลือกข้อมูล OUT ไปใส่คอลัมน์ OUT เสร็จแล้วทำการรวมผลลัพท์และจัดกลุ่มเป็นรายเดือน
นอกจากการใช้ SUM แล้วเรายังสามารถใช้ฟังก์ชั่นของ SQL อื่นๆในกลุ่ม Aggregate Function เช่น MIN() MAX() เพื่อสรุปข้อมูลที่ต้องการได้อีกด้วย