PIVOT คือ คำสั่งใน SQL ที่ใช้ในการเปลี่ยนข้อมูลหรือหมุนข้อมูลที่อยู่ในแกน Row ให้แสดงผลใน Column

 

UNPIVOT คือ คำสั่ง SQL ที่ใช้ในการหมุนข้อมูลที่อยู่ในแกน Column ลงมาเป็นแกน Row

 

ตัวอย่างที่ 1 การใช้คำส่ง PIVOT ข้อมูล มีวิธีการดังนี้  จากรูปด้านล่าง เราจะมาทำการเปลี่ยนข้อมูลฟิลล์ Country ให้แสดงผลในแกน Column สามารถเขียน SQL Script และทดลองรันจะได้ผลลัพธ์ดังรูป

ตัวอย่าง Full Script : สามารถนำไปรันทดลองเล่นได้เลยครับ

— Prepare Data
with [data_demo] as (
select Segment=’Channel Partners’,Country=’Mexico’ , UnitSold = 3442
union all
select Segment=’Channel Partners’,Country=’Canada’ , UnitSold = 200
union all
select Segment=’Channel Partners’,Country=’France’ , UnitSold = 3999
union all
select Segment=’Channel Partners’,Country=’Germany’ , UnitSold = 2000
union all
select Segment=’Government’,Country=’Canada’ , UnitSold = 1618
union all
select Segment=’Midmarket’,Country=’France’ , UnitSold = 800
union all
select Segment=’Midmarket’,Country=’Mexico’ , UnitSold = 300
union all
select Segment=’Small Business’,Country=’Mexico’ , UnitSold = 1222)

— Test PIVOT
SELECT [Segment] ,[Canada], [Germany], [France], [Mexico]
FROM [data_demo]
PIVOT (sum(UnitSold)
FOR [Country] IN ([Canada],[Germany],[France],[Mexico])
) AS pvt
ORDER BY pvt.[Segment];

ผลลัพธ์ที่ได้จากการรัน Script ข้างบน

อธิบายเพิ่มเติม
  – PIVOT(…………………)  คือ คำสั่ง PIVOT ใน (………….) เราจะใส่ฟิลล์ที่ต้องการคำนวณและแสดงผล
  – sum(UnitSold) คือ การหาผลรวมของยอดขาย 
  – For Country  คือ ฟิลล์ที่จะนำข้อมูลภายในมาใช้เป็นแกน Column
  – IN (Canada, Germany, France, Mexico)  คือ ข้อมูลที่เราเลือกขึ้นมาแสดงผลเป็น Column

 

ตัวอย่างที่ 2 การใช้คำส่ง UNPIVOT ข้อมูล มีวิธีการดังนี้  จากรูปด้านล่างเราจะมาเปลี่ยนข้อมูล Country ในแกน Column ลงมาแสดงผลในแกน Row กันครับโดยใช้คำสั่ง UNPIVOT


ตัวอย่าง Full Script
— Prepare Data
with [data_demo] as (
select [Segment] = ‘Channel Partners’ ,[Canada] = 200, [Germany]=2000, [France]=3999, [Mexico] =3442
union all
select [Segment] = ‘Government’ ,[Canada] = 1618, [Germany]=300, [France]=111, [Mexico] =600
union all
select [Segment] = ‘Midmarket’ ,[Canada] = 123, [Germany]=666, [France]=1212, [Mexico] =5000
)
— Test PIVOT
SELECT [Segment] ,[Country], UnitSold
FROM [data_demo]
UNPIVOT ( UnitSold for [Country] in ([Canada],[Germany],[France],[Mexico])
) AS pvt
ORDER BY pvt.[Segment];

ผลลัพธ์ที่ได้จากการรัน Script ข้างบน

อธิบายเพิ่มเติม
  – UNPIVOT(…………………)  คือ คำสั่ง UNPIVOT ใน (………….) เราจะใส่ฟิลล์ที่ต้องการคำนวณและแสดงผล
  – UnitSold คือ จำนวนยอดขายที่จะเปลี่ยนลงมาแกน Row ตาม Country 
  – For Country  คือ ฟิลล์ที่จะใช้เก็บข้อมูลประเทศในแกน Row
  – IN (Canada, Germany, France, Mexico)  คือ ข้อมูลที่อยู่ใน Column แล้วเราเลือกออกมาเพื่อที่จะเปลี่ยนให้อยู่ในแกน Row

TG Facebook Comments