Pivot ใน SQL Server เป็นเทคนิคที่ใช้สำหรับการแปลงข้อมูลจากรูปแบบแถว (Row)
ให้กลายเป็นรูปแบบคอลัมน์ (Column) ซึ่งมักใช้ในการสร้างรายงานหรือสรุปข้อมูล
เช่น การสรุปยอดขายตามเดือน หรือการแสดงข้อมูลในรูปแบบตารางสรุป
คำสั่ง PIVOT ช่วยให้เราสามารถจัดกลุ่มข้อมูล
และกระจายค่าออกเป็นหลายคอลัมน์ได้อย่างสะดวก
โครงสร้างคำสั่ง PIVOT
SELECT *
FROM
(
SELECT column1, column2, column3
FROM table_name
) AS source_table
PIVOT
(
aggregate_function(column3)
FOR column2 IN ([value1], [value2], [value3])
) AS pivot_table
ตัวอย่างตารางข้อมูล
sales
--------------------------------
product | month | amount
--------------------------------
A | Jan | 100
A | Feb | 150
A | Mar | 200
B | Jan | 300
B | Feb | 250
B | Mar | 400
ตัวอย่างการทำ Pivot
ต้องการแสดงยอดขายของสินค้าแต่ละเดือนในรูปแบบคอลัมน์
SELECT *
FROM
(
SELECT product, month, amount
FROM sales
) AS src
PIVOT
(
SUM(amount)
FOR month IN ([Jan], [Feb], [Mar])
) AS pvt
ผลลัพธ์
product | Jan | Feb | Mar
-------------------------
A |100 |150 |200
B |300 |250 |400
จะเห็นว่าค่าในคอลัมน์ month
ถูกแปลงมาเป็นคอลัมน์ใหม่
ตัวอย่าง Pivot พร้อมการจัดเรียงข้อมูล
SELECT *
FROM
(
SELECT product, month, amount
FROM sales
) AS src
PIVOT
(
SUM(amount)
FOR month IN ([Jan], [Feb], [Mar])
) AS pvt
ORDER BY product
การใช้ Pivot กับหลายค่า
ในบางกรณีอาจต้องการใช้ Pivot เพื่อสรุปข้อมูลหลายประเภท
เช่น ยอดขายรวม หรือจำนวนรายการ
ซึ่งสามารถใช้ Aggregate Function ต่าง ๆ ได้ เช่น
SUM(), COUNT(), AVG()
ข้อดีของการใช้ Pivot
- ช่วยแปลงข้อมูลจาก Row ให้เป็น Column ได้ง่าย
- เหมาะสำหรับสร้างรายงาน
- ช่วยให้การอ่านข้อมูลในตารางทำได้ง่ายขึ้น
- ลดการเขียน Query ที่ซับซ้อน
สรุป
Pivot เป็นฟีเจอร์สำคัญของ SQL Server
ที่ช่วยให้สามารถจัดรูปแบบข้อมูลเพื่อสร้างรายงานได้ง่ายขึ้น
โดยการแปลงค่าจากแถวให้เป็นคอลัมน์
และใช้ร่วมกับ Aggregate Function เช่น SUM หรือ COUNT
เพื่อสรุปข้อมูลในรูปแบบตารางที่อ่านง่าย
