Company insights

การทำ Pivot ใน SQL Server


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
เพื่อสรุปข้อมูลในรูปแบบตารางที่อ่านง่าย