SQL Pivot - รู้วิธีแปลงแถวเป็นคอลัมน์



บทความเกี่ยวกับ SQL Pivot นี้เป็นคำแนะนำที่ครอบคลุมเกี่ยวกับวิธีการแปลงข้อมูลระดับแถวเป็นข้อมูลคอลัมน์พร้อมตัวอย่างเชิงลึก

เชิงสัมพันธ์ จัดเก็บข้อมูลจำนวนมหาศาลในรูปแบบของตาราง ตารางเหล่านี้สามารถมีแถวและคอลัมน์จำนวนเท่าใดก็ได้ แต่ถ้าคุณต้องเปลี่ยนข้อมูลระดับแถวเป็นข้อมูลคอลัมน์ล่ะ? ในบทความเกี่ยวกับ SQL Pivot นี้ฉันจะแสดงให้คุณเห็นว่าคุณสามารถแปลงแถวเป็นคอลัมน์ใน SQL Server ได้อย่างไร

หัวข้อต่อไปนี้จะกล่าวถึงในบทความนี้:





PIVOT ใน SQL คืออะไร?

PIVOT ใช้เพื่อหมุนค่าตารางโดยการแปลงค่าเฉพาะของคอลัมน์เดียวเป็นหลายคอลัมน์ ใช้เพื่อหมุนแถวเป็นค่าคอลัมน์และเรียกใช้การรวมเมื่อจำเป็นกับค่าคอลัมน์ที่เหลือ

ในทางกลับกัน UNPIVOT ใช้เพื่อดำเนินการที่ตรงกันข้าม ดังนั้นจึงใช้เพื่อแปลงคอลัมน์ของตารางเฉพาะเป็นค่าคอลัมน์



ต่อไปในบทความนี้ให้เราเข้าใจไวยากรณ์ของ SQL Pivot

ไวยากรณ์:

SELECT NonPivoted ColumnName, [First Pivoted ColumnName] AS ColumnName, [Second Pivoted ColumnName] AS ColumnName, [Third Pivoted ColumnName] AS ColumnName, ... [Last Pivoted ColumnName] AS ColumnName FROM (SELECT query ที่สร้างข้อมูล) AS [alias สำหรับการสืบค้นเริ่มต้น] PIVOT ([AggregationFunction] (ColumName) สำหรับ [ColumnName ของคอลัมน์ที่ค่าจะกลายเป็นส่วนหัวของคอลัมน์] IN ([First Pivoted ColumnName], [Second Pivoted ColumnName], [Third Pivoted ColumnName] ... [last pivoted column])) AS [นามแฝงสำหรับ Pivot Table]

ที่นี่คุณยังสามารถใช้ไฟล์ ORDER BY clause เพื่อจัดเรียงค่าตามลำดับจากน้อยไปมากหรือมากไปหาน้อย ตอนนี้คุณรู้แล้วว่า PIVOT ใน SQL คืออะไรและไวยากรณ์พื้นฐานแล้วให้เราก้าวไปข้างหน้าและดูวิธีการใช้งาน

ตัวอย่าง

เพื่อความเข้าใจที่ดีขึ้นเราจะพิจารณาตารางต่อไปนี้เพื่ออธิบายตัวอย่างทั้งหมด



ตารางผู้จำหน่าย:

รหัสซัพพลายเออร์ DaysofManufacture ค่าใช้จ่าย รหัสลูกค้า รหัสการซื้อ
หนึ่ง121230สิบเอ็ดP1
2ยี่สิบเอ็ดพ.ศ. 218622P2
3322. 3. 4. 5สิบเอ็ดP3
414876522P1
542345233P3
631543133P1
7412342สิบเอ็ดP2
854365422P2
9331234สิบเอ็ดP3
1056683233P2

ให้เราเขียนแบบสอบถามง่ายๆเพื่อดึงต้นทุนเฉลี่ยที่ลูกค้าแต่ละรายใช้ไป

เลือก CustomerID, AVG (ต้นทุน) เป็น AverageCostofCustomer จากซัพพลายเออร์ GROUP BY CustomerID

เอาท์พุต:

รหัสลูกค้า AverageCostofCustomer
สิบเอ็ด1787.75
224654
335238.33

ตอนนี้ให้เราบอกว่าเราต้องการหมุนตารางด้านบน ที่นี่ค่าคอลัมน์ CustomerID จะกลายเป็นส่วนหัวของคอลัมน์

- สร้างตาราง Pivot ด้วยหนึ่งแถวและสามคอลัมน์ SELECT 'AverageCostofCustomer' AS Cost_According_To_Customers, [11], [22], [33] FROM (SELECT CustomerID, Cost FROM Suppliers) AS SourceTable PIVOT (AVG (Cost) for CustomerID IN ( [11], [22], [33])) เป็น PivotTable

เอาท์พุต:

Cost_According_To_Customers สิบเอ็ด2233
AverageCostofCustomer 1787.7546545238.33

บันทึก: เมื่อคุณใช้ ฟังก์ชันรวม ด้วย PIVOT ค่า null จะไม่ได้รับการพิจารณาในขณะที่คำนวณการรวม

นั่นเป็นตัวอย่างพื้นฐาน แต่ตอนนี้ให้เราเข้าใจว่าประโยค PIVOT ทำงานอย่างไร

การทำงานของข้อ PIVOT

ดังที่คุณสามารถอ้างถึงข้างต้นในการสร้าง PIVOT TABLE คุณต้องทำตามขั้นตอนด้านล่าง:

  • เลือกคอลัมน์สำหรับการหมุน
  • จากนั้นเลือกตารางต้นทาง
  • ใช้ตัวดำเนินการ PIVOT จากนั้นใช้ฟังก์ชันการรวม
  • พูดถึงค่าเดือย

เลือกคอลัมน์สำหรับการหมุน

เริ่มแรกเราต้องระบุฟิลด์ที่จะรวมไว้ในผลลัพธ์ของเรา ในตัวอย่างของเราฉันพิจารณาคอลัมน์ AverageCostofCustomer ในตาราง Pivot จากนั้นเราสร้างคอลัมน์อีกสามคอลัมน์โดยมีส่วนหัวของคอลัมน์ 11, 22 และ 33 ตัวอย่าง -

วิธีการแยกวิเคราะห์ xml ใน java
เลือก 'AverageCostofCustomer' เป็น Cost_According_To_Customers, [11], [22], [33]

เลือกตารางต้นทาง

ถัดไปคุณต้องระบุคำสั่ง SELECT ซึ่งจะส่งคืนข้อมูลต้นทางสำหรับตาราง Pivot ในตัวอย่างของเราเรากำลังส่งคืนรหัสลูกค้าและต้นทุนจากตารางซัพพลายเออร์

(เลือกรหัสลูกค้าต้นทุนจากซัพพลายเออร์) เป็น SourceTable

ใช้ตัวดำเนินการ PIVOT จากนั้นใช้ฟังก์ชันการรวม

ถัดไปคุณต้องระบุฟังก์ชันการรวมที่จะใช้ในขณะสร้างตารางสาระสำคัญ ในตัวอย่างของเราฉันใช้ฟังก์ชัน AVG เพื่อคำนวณต้นทุนเฉลี่ย

PIVOT (AVG (ต้นทุน)

พูดถึงค่าเดือย

สุดท้ายคุณต้องพูดถึงค่าที่ต้องรวมไว้ในตาราง Pivot ที่เป็นผลลัพธ์ ค่าเหล่านี้จะใช้เป็นส่วนหัวของคอลัมน์ในตาราง Pivot

สำหรับ CustomerID IN ([11], [22], [33])) เป็น PivotTable

นั่นคือวิธีการทำงานของตัวดำเนินการ PIVOT ในบทความนี้เกี่ยวกับ SQL PIVOT ให้เราเข้าใจว่ามันแตกต่างจาก SQL UNPIVOT อย่างไร

SQL UNPIVOT

ตัวดำเนินการ SQL UNPIVOT ใช้เพื่อดำเนินการที่ตรงกันข้ามกับของ PIVOT ใช้เพื่อหมุนข้อมูลคอลัมน์เป็นข้อมูลระดับแถว ไวยากรณ์ของ UNPIVOT นั้นคล้ายกับของ PIVOT ข้อแตกต่างเพียงอย่างเดียวคือคุณต้องใช้ไฟล์ ' UNPIVOT” .

ตัวอย่าง:

ให้เราสร้างตารางด้วยคอลัมน์ SupplierID, AAA, BBB และ CCC ใส่ค่าน้อย ๆ ด้วย

สร้างตารางตัวอย่าง (SupplierID int, AAA int, BBB int, CCC int) GO INSERT INTO sampletable VALUES (1,3,5,6) INSERT INTO sampletable VALUES (2,9,2,8) INSERT INTO sampletable VALUES (3, 8,1,7) ไป

เอาท์พุต:

รหัสซัพพลายเออร์ AAA BBB CCC
หนึ่ง356
2928
38หนึ่ง7

ตอนนี้สมมติว่าเราต้องการยกเลิกการใช้งานตาราง ในการทำเช่นนั้นคุณสามารถอ้างถึงรหัสต่อไปนี้:

เลือก SupplierID ลูกค้าผลิตภัณฑ์จาก (เลือกซัพพลายเออร์ D, AAA, BBB, CCC จากตัวอย่างตาราง) p UNPIVOT (ผลิตภัณฑ์สำหรับลูกค้าใน (AAA, BBB, CCC)) ดังตัวอย่าง GO
รหัสซัพพลายเออร์ ลูกค้า ผลิตภัณฑ์

หนึ่ง

AAA

3

หนึ่ง

BBB

5

หนึ่ง

CCC

6

2

AAA

9

2

BBB

2

2

CCC

8

3

AAA

8

3

BBB

หนึ่ง

ความแตกต่างของ java ระหว่างการขยายและการใช้งาน

3

CCC

7

นั่นคือวิธีที่คุณสามารถใช้ SQL PIVOT และ UNPIVOT ด้วยเหตุนี้เราจึงมาจบบทความนี้ ฉันหวังว่าคุณจะเข้าใจวิธีใช้ SQL หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ MySQL และทำความรู้จักกับฐานข้อมูลเชิงสัมพันธ์แบบโอเพนซอร์สนี้จากนั้นตรวจสอบไฟล์ ซึ่งมาพร้อมกับการฝึกอบรมสดที่นำโดยผู้สอนและประสบการณ์โครงการในชีวิตจริง การฝึกอบรมนี้จะช่วยให้คุณเข้าใจ MySQL ในเชิงลึกและช่วยให้คุณบรรลุความเชี่ยวชาญในเรื่องนั้น ๆ

มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นของบทความนี้เกี่ยวกับ SQL Pivot แล้วเราจะติดต่อกลับไป