คำสั่ง 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() เพื่อสรุปข้อมูลที่ต้องการได้อีกด้วย
ผู้เขียน goragod โพสต์เมื่อ 17 ก.ย. 2560 เปิดดู 8,514 ป้ายกำกับ SQL
^