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

บทความโดย: 9Expert Team

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

9Expert Team 3 นาที

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

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

Employee ID

First Name

Last Name

Address

City

Country

1

Nancy

Davolio

507 - 20th Ave. E.
Apt. 2A

Seattle

USA

2

Andrew

Fuller

908 W. Capital Way

Tacoma

USA

3

Janet

Leverling

722 Moss Bay Blvd.

Kirkland

USA

4

Margaret

Peacock

4110 Old Redmond Rd.

Redmond

USA

5

Steven

Buchanan

14 Garrett Hill

London

UK

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


 

Employee ID

1

2

3

4

5

First Name

Nancy

Andrew

Janet

Margaret

Steven

Last Name

Davolio

Fuller

Leverling

Peacock

Buchanan

Address

507 - 20th Ave. E.
Apt. 2A

908 W. Capital Way

722 Moss Bay Blvd.

4110 Old Redmond Rd.

14 Garrett Hill

City

Seattle

Tacoma

Kirkland

Redmond

London

Country

USA

USA

USA

USA

UK

ซึ่งถ้าใน 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;

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

ColHead

Employee ID

TheVal

1

Address

507 - 20th Ave. E.
Apt. 2A

1

City

Seattle

1

Country

USA

1

FirstName

Nancy

1

Last Name

Davolio

2

Address

908 W. Capital Way

2

City

Tacoma

2

Country

USA

2

FirstName

Andrew

2

Last Name

Fuller

3

Address

722 Moss Bay Blvd.

3

City

Kirkland

3

Country

USA

3

FirstName

Janet

3

Last Name

Leverling

4

Address

4110 Old Redmond Rd.

4

City

Redmond

4

Country

USA

4

FirstName

Margaret

4

Last Name

Peacock

5

Address

14 Garrett Hill

5

City

London

5

Country

UK

5

FirstName

Steven

5

Last Name

Buchanan

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

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

Employee ID

1

2

3

4

5

Address

507 - 20th Ave. E.
Apt. 2A

908 W. Capital Way

722 Moss Bay Blvd.

4110 Old Redmond Rd.

14 Garrett Hill

City

Seattle

Tacoma

Kirkland

Redmond

London

Country

USA

USA

USA

USA

UK

FirstName

Nancy

Andrew

Janet

Margaret

Steven

Last Name

Davolio

Fuller

Leverling

Peacock

Buchanan

ซึ่งจะเห็นว่า  ผลลัพธ์ที่ได้ จะยังไม่ตรงทั้งหมดตรงที่ ไม่ได้เริ่มต้นตั้งแต่ 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