SQL Pivot - Biết cách chuyển đổi hàng thành cột



Bài viết này trên SQL Pivot là một hướng dẫn toàn diện về cách chuyển đổi dữ liệu mức hàng thành dữ liệu cột với các ví dụ chuyên sâu.

Quan hệ lưu trữ một lượng lớn dữ liệu dưới dạng bảng. Các bảng này có thể có bất kỳ số hàng và cột nào. Nhưng, điều gì sẽ xảy ra nếu bạn phải thay đổi dữ liệu cấp hàng thành dữ liệu cột? Trong bài viết này về SQL Pivot, tôi sẽ chỉ cho bạn cách bạn có thể chuyển đổi các hàng thành một cột trong SQL Server.

Các chủ đề sau sẽ được đề cập trong bài viết này:





PIVOT trong SQL là gì?

PIVOT được sử dụng để xoay giá trị bảng bằng cách chuyển đổi các giá trị duy nhất của một cột thành nhiều cột. Nó được sử dụng để xoay các hàng thành giá trị cột và chạy tổng hợp khi được yêu cầu trên các giá trị cột còn lại.

Mặt khác, UNPIVOT được sử dụng để thực hiện các hoạt động ngược lại. Vì vậy, nó được sử dụng để chuyển đổi các cột của một bảng cụ thể thành các giá trị cột.



Tiếp tục trong bài viết này, chúng ta hãy hiểu cú pháp của SQL Pivot.

Cú pháp:

CHỌN Tên cột không phân chia vị trí, [Tên cột được phân chia đầu tiên] Tên cột AS, [Tên cột được phân chia thứ hai] Tên cột AS, [Tên cột được phân chia thứ ba] Tên cột được phân chia cuối cùng, ... [Tên cột được phân chia cuối cùng] Tên cột AS từ (truy vấn CHỌN tạo ra dữ liệu) AS [bí danh cho truy vấn ban đầu] PIVOT ([AggregationFunction] (ColumName) FOR [ColumnName của cột có giá trị sẽ trở thành tiêu đề cột] IN ([Tên cột được phân chia đầu tiên], [Tên cột được chia vòng thứ hai], [Tên cột được phân chia thứ ba] ... [cuối cùng cột xoay])) AS [bí danh cho Bảng tổng hợp]

Đây,bạn cũng có thể sử dụng Mệnh đề ORDER BY để sắp xếp các giá trị theo thứ tự tăng dần hoặc giảm dần. Bây giờ bạn đã biết PIVOT trong SQL là gì và cú pháp cơ bản của nó, hãy cùng chúng tôi tiếp tục và xem cách sử dụng nó.

Ví dụ

Để bạn hiểu rõ hơn, tôi sẽ xem xét bảng sau để giải thích cho bạn tất cả các ví dụ.



Bảng nhà cung cấp:

ID nhà cung cấp Daysof Giá cả ID khách hàng PurchaseID
một121230mười mộtP1
2hai mươi mốt154322P2
3322. 3. 4. 5mười mộtP3
414876522P1
542345233P3
631543133P1
7412342mười mộtP2
số 854365422P2
9331234mười mộtP3
1056683233P2

Hãy để chúng tôi viết một truy vấn đơn giản để lấy chi phí trung bình của mỗi khách hàng.

CHỌN CustomerID, AVG (Cost) AS AverageCostofCustomer TỪ NHÓM Nhà cung cấp THEO ID khách hàng

Đầu ra:

ID khách hàng AverageCostofCustomer
mười một1787,75
224654
335238,33

Bây giờ, chúng ta hãy nói rằng chúng ta muốn xoay bảng trên. Tại đây, các giá trị cột CustomerID sẽ trở thành tiêu đề cột.

- Tạo bảng tổng hợp với một hàng và ba cột CHỌN 'AverageCostofCustomer' AS Cost_According_To_Customers, [11], [22], [33] FROM (CHỌN ID Khách hàng, Chi phí TỪ Nhà cung cấp) NHƯ PIVOT Bảng mã nguồn (AVG (Chi phí) FOR CustomerID IN ( [11], [22], [33])) AS PivotTable

Đầu ra:

Cost_According_To_Customers mười một2233
AverageCostofCustomer 1787,7546545238,33

Ghi chú: Khi bạn sử dụng Chức năng tổng hợp với PIVOT, các giá trị rỗng không được xem xét trong khi tính toán tổng hợp.

Đó là một ví dụ cơ bản, nhưng bây giờ chúng ta hãy hiểu mệnh đề PIVOT hoạt động như thế nào.

Hoạt động của điều khoản PIVOT

Như bạn có thể tham khảo ở trên, để tạo BẢNG PIVOT, bạn cần làm theo các bước sau:

  • Chọn các cột để xoay vòng
  • Sau đó, chọn một bảng nguồn.
  • Áp dụng toán tử PIVOT, sau đó sử dụng các hàm tổng hợp.
  • Đề cập đến các giá trị trục.

Chọn các cột để xoay vòng

Ban đầu, chúng tôi phải chỉ định các trường được đưa vào kết quả của chúng tôi. Trong ví dụ của chúng tôi, tôi đã xem xét cột AverageCostofCustomer trong bảng Pivot. Sau đó, chúng tôi tạo ba cột khác với các tiêu đề cột 11, 22 và 33. Ví dụ-

làm thế nào để trở thành một nhà phát triển hoạt cảnh
CHỌN 'AverageCostofCustomer' AS Cost_According_To_Customers, [11], [22], [33]

Chọn bảng nguồn

Tiếp theo, bạn phải chỉ định câu lệnh SELECT sẽ trả về dữ liệu nguồn cho bảng tổng hợp. Trong ví dụ của chúng tôi, chúng tôi đang trả lại CustomerID và Chi phí từ bảng Nhà cung cấp.

(CHỌN ID khách hàng, Chi phí từ nhà cung cấp) AS SourceTable

Áp dụng toán tử PIVOT, sau đó sử dụng các hàm tổng hợp

Tiếp theo, bạn phải chỉ định hàm tổng hợp sẽ được sử dụng trong khi tạo bảng tổng hợp. Trong ví dụ của chúng tôi, tôi đã sử dụng hàm AVG để tính chi phí trung bình.

PIVOT (AVG (Chi phí)

Đề cập đến các giá trị trục

Cuối cùng, bạn phải đề cập đến các giá trị phải được bao gồm trong bảng tổng hợp kết quả. Các giá trị này sẽ được sử dụng làm tiêu đề cột trong bảng tổng hợp.

ĐỐI VỚI ID Khách Hàng TRONG ([11], [22], [33])) NHƯ PivotTable

Đó là cách các toán tử PIVOT hoạt động. Tiếp tục trong bài viết này về SQL PIVOT, chúng ta hãy hiểu nó khác với SQL UNPIVOT như thế nào.

SQL UNPIVOT

Toán tử SQL UNPIVOT được sử dụng để thực hiện hoạt động ngược lại với PIVOT. Nó được sử dụng để xoay dữ liệu cột thành dữ liệu cấp hàng. Cú pháp của UNPIVOT tương tự như cú pháp của PIVOT. Sự khác biệt duy nhất là bạn phải sử dụng ' UNPIVOT ” .

Thí dụ:

Hãy để chúng tôi tạo một bảng với các cột SupplierID, AAA, BBB và CCC. Ngoài ra, hãy chèn một vài giá trị.

TẠO BẢNG mẫu bảng (int SupplierID, AAA int, BBB int, CCC int) ĐI CHÈN VÀO GIÁ TRỊ bảng mẫu (1,3,5,6) CHÈN VÀO GIÁ TRỊ bảng mẫu (2,9,2,8) CHÈN VÀO GIÁ TRỊ bảng mẫu (3, 8,1,7) ĐI

Đầu ra:

ID nhà cung cấp AAA BBB CCC
một356
292số 8
3số 8một7

Bây giờ, hãy để chúng tôi nói, chúng tôi muốn hủy chia bảng. Để làm được điều đó, bạn có thể tham khảo đoạn mã sau:

CHỌN ID Nhà cung cấp, Khách hàng, Sản phẩm TỪ (CHỌN Nhà cung cấpD, AAA, BBB, CCC TỪ bảng mẫu) p UNPIVOT (Sản phẩm DÀNH CHO Khách hàng TẠI (AAA, BBB, CCC)) NHƯ ví dụ ĐI
ID nhà cung cấp Khách hàng Các sản phẩm

một

AAA

3

một

BBB

5

một

CCC

6

2

AAA

9

2

BBB

2

2

CCC

số 8

3

AAA

số 8

3

BBB

một

một nhà phát triển hoạt cảnh làm gì

3

CCC

7

Đó là cách bạn có thể sử dụng SQL PIVOT và UNPIVOT. Với điều này, chúng ta kết thúc bài viết này. Tôi hy vọng bạn đã hiểu, cách sử dụng SQL. Nếu bạn muốn tìm hiểu thêm về MySQL và tìm hiểu cơ sở dữ liệu quan hệ mã nguồn mở này, sau đó xem đi kèm với đào tạo trực tiếp do người hướng dẫn và trải nghiệm dự án thực tế. Khóa đào tạo này sẽ giúp bạn hiểu sâu về MySQL và giúp bạn thành thạo chủ đề này.

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần nhận xét của bài viết này trên SQL Pivot và tôi sẽ liên hệ lại với bạn.