Transpose ข้อมูล ด้วย Microsoft Access

บทความนี้กล่าวถึง วิธีการแปลงข้อมูลใน Microsoft Access ให้อยู่ในรูปแบบเดียวกับ Copy ข้อมูล แล้ว Paste แบบ Transpose ใน Microsoft Excel
Transpose ข้อมูล ด้วย Microsoft Access
ทักษะ (ระบุได้หลายทักษะ)

Transpose ข้อมูล ด้วย Microsoft Access

หากเรามีข้อมูลดังตารางข้างล่างนี้

Employee IDFirst NameLast NameAddressCityCountry
1NancyDavolio507 - 20th Ave. E.
Apt. 2A
SeattleUSA
2AndrewFuller908 W. Capital WayTacomaUSA
3JanetLeverling722 Moss Bay Blvd.KirklandUSA
4MargaretPeacock4110 Old Redmond Rd.RedmondUSA
5StevenBuchanan14 Garrett HillLondonUK

แต่ต้องการแปลงข้อมูลให้ได้ดังตารางข้างล่างนี้


 

Employee ID12345
First NameNancyAndrewJanetMargaretSteven
Last NameDavolioFullerLeverlingPeacockBuchanan
Address507 - 20th Ave. E.
Apt. 2A
908 W. Capital Way722 Moss Bay Blvd.4110 Old Redmond Rd.14 Garrett Hill
CitySeattleTacomaKirklandRedmondLondon
CountryUSAUSAUSAUSAUK

ซึ่งถ้าใน Microsoft Excel เราสามารถ Copy ข้อมูล แล้ว Paste แบบ Transpose ได้
แต่ถ้าเราอยากแปลงรูปแบบดังกล่าวใน Microsoft ACCESS  เราสามารถทำได้ด้วยการสร้าง Query ให้มี 3 คอลัมน์ดังนี้

  • คอลัมน์แรก เป็นข้อมูล EmployeeID
  • คอลัมน์ที่สอง เป็นข้อมูล ชื่อคอลัมน์ เช่น FirstName,LastNme เป็นต้น
  • คอลัมน์ที่สาม เป็นข้อมูล ค่าของแต่ละคอลัมน์ เช่น ค่าของ FirstName,ค่าของ LastName เป็นต้น

ซึ่งเราสามารถนำ Query ในรูปแบบดังกล่าวได้โดยเขียน Union Query ดังนี้

SELECT EmployeeID as ColHead, "FirstName" AS [Employee ID], FirstName AS TheVal
FROM Employees

UNION

SELECT EmployeeID , "Last Name",LastName
FROM Employees

UNION

SELECT EmployeeID , "Address" ,Address
FROM Employees

UNION

SELECT EmployeeID , "City" ,City
FROM Employees
UNION SELECT EmployeeID , "Country" ,Country
FROM Employees;

จะได้ผลลัพธ์ดังนี้

ColHeadEmployee IDTheVal
1Address507 - 20th Ave. E.
Apt. 2A
1CitySeattle
1CountryUSA
1FirstNameNancy
1Last NameDavolio
2Address908 W. Capital Way
2CityTacoma
2CountryUSA
2FirstNameAndrew
2Last NameFuller
3Address722 Moss Bay Blvd.
3CityKirkland
3CountryUSA
3FirstNameJanet
3Last NameLeverling
4Address4110 Old Redmond Rd.
4CityRedmond
4CountryUSA
4FirstNameMargaret
4Last NamePeacock
5Address14 Garrett Hill
5CityLondon
5CountryUK
5FirstNameSteven
5Last NameBuchanan

หลังจากนั้น นำข้อมูลดังกล่าวมาทำ Crosstab Query ซึ่ง Design View ของ Crosstab Query เป็นดังนี้ค่ะ

นำข้อมูลมาทำ Crosstab Query

ผลลัพธ์ที่ได้เป็นดังนี้ค่ะ

Employee ID12345
Address507 - 20th Ave. E.
Apt. 2A
908 W. Capital Way722 Moss Bay Blvd.4110 Old Redmond Rd.14 Garrett Hill
CitySeattleTacomaKirklandRedmondLondon
CountryUSAUSAUSAUSAUK
FirstNameNancyAndrewJanetMargaretSteven
Last NameDavolioFullerLeverlingPeacockBuchanan

ซึ่งจะเห็นว่า  ผลลัพธ์ที่ได้ จะยังไม่ตรงทั้งหมดตรงที่ ไม่ได้เริ่มต้นตั้งแต่ FirstName
เนื่องจากมีการเรียงลำดับข้อมูลตามตัวอักษร จึงเริ่มต้นที่ Address
ซึ่งการแก้ปัญหานี้ อาจต้องใส่ ตัวเลขนำหน้า ในขั้นตอนการทำ Union Query เช่น

SELECT EmployeeID as ColHead, "1.FirstName" AS [Employee ID], FirstName AS TheVal
FROM Employees
UNION
SELECT EmployeeID , "2.Last Name",LastName
FROM Employees

จึงจะได้ลำดับข้อมูลตามที่ต้องการค่ะ

บางท่านอาจจะคิดว่า หากทำเพียงเท่านี้ ไม่น่าจะยุ่งยากมาทำให้ MS Access ก็ได้
แต่อย่าลืมว่าใน MS Access สามารถใส่ค่า Parameter ใน crosstab Query ได้
ซึ่งติดตามได้ในบทความ การใส่ Parameter ใน Crosstab Query ค่ะ
https://www.9experttraining.com/articles/การใส่-parameter-ใน-crosstab-query