Kỹ thuật PIVOT và UNPIVOT trong SQL: Xoay dọc và xoay ngang bảng dữ liệu để làm báo cáo

7b999bc7-ca41-46cf-b58f-6441b3b5c96b

Hướng dẫn xoay chiều dữ liệu bằng PIVOT trong SQL và UNPIVOT: chuyển đổi dữ liệu dòng thành cột và ngược lại để chuẩn bị bảng dữ liệu phẳng phục vụ trực quan hóa.

1. Tại sao cần sử dụng PIVOT trong SQL?

Trong cơ sở dữ liệu quan hệ, dữ liệu thường được lưu trữ dưới dạng hàng dọc (Long Format) để tối ưu lưu trữ. Tuy nhiên, khi làm báo cáo, các nhà quản lý lại ưu tiên dạng bảng ngang (Wide Format) kiểu Pivot Table trong Excel.

Kỹ thuật PIVOT trong SQL giúp bạn xoay các giá trị từ dòng thành các cột riêng biệt. Nhờ đó, báo cáo tổng hợp doanh thu theo tháng hay theo khu vực trở nên trực quan và dễ đọc hơn rất nhiều.

2. Kỹ thuật PIVOT trong SQL là gì?

PIVOT trong SQL là thao tác chuyển đổi các giá trị duy nhất của một cột thành nhiều cột mới, đồng thời thực hiện các phép toán tổng hợp (SUM, COUNT, AVG…) trên các cột còn lại.

Cú pháp chuẩn trên SQL Server:

SQL

SELECT * 
FROM (
    SELECT Nam, Thang, DoanhThu
    FROM BanHang
) SourceTable
PIVOT (
    SUM(DoanhThu)
    FOR Thang IN ([Thang1], [Thang2], [Thang3])
) PivotTable;

3. Giải pháp thay thế PIVOT trong SQL bằng CASE WHEN

Không phải hệ quản trị nào cũng hỗ trợ cú pháp PIVOT trực tiếp (ví dụ như PostgreSQL hay MySQL). Khi đó, việc kết hợp CASE WHEN với hàm tổng hợp là phương pháp thay thế PIVOT trong SQL cực kỳ linh hoạt:

SQL

SELECT 
    Nam,
    SUM(CASE WHEN Thang = 1 THEN DoanhThu ELSE 0 END) AS Thang1,
    SUM(CASE WHEN Thang = 2 THEN DoanhThu ELSE 0 END) AS Thang2,
    SUM(CASE WHEN Thang = 3 THEN DoanhThu ELSE 0 END) AS Thang3
FROM BanHang
GROUP BY Nam;

4. Kỹ thuật UNPIVOT trong SQL: Đưa dữ liệu về dạng chuẩn hóa

Ngược lại với PIVOT, UNPIVOT thực hiện nhiệm vụ chuyển đổi các cột thành các dòng. Kỹ thuật này cực kỳ quan trọng khi bạn nhận được tệp dữ liệu báo cáo dạng ngang và cần chuẩn hóa về dạng dữ liệu phẳng (Flat Data) để đưa vào Power BI hay Tableau.

Cú pháp cơ bản của UNPIVOT:

SQL

SELECT Nam, Thang, DoanhThu
FROM BáoCaoNgang
UNPIVOT (
    DoanhThu FOR Thang IN (Thang1, Thang2, Thang3)
) UnpivotTable;

5. Ứng dụng thực tế của PIVOT trong SQL cho Data Analyst

Việc làm chủ kỹ thuật PIVOT trong SQL đem lại nhiều lợi ích cho Data Analyst:

  • Tạo báo cáo Matrix nhanh chóng: Xoay dữ liệu doanh số theo năm và quý chỉ bằng một câu lệnh.

  • Chuẩn hóa dữ liệu đầu vào: Biến đổi các bảng báo cáo phức tạp thành dạng chuẩn hóa để xây dựng Data Model.

  • Tối ưu tốc độ xử lý: Giảm thiểu việc xuất dữ liệu ra Excel để thao tác thủ công.

6. Tổng kết

Thành thạo kỹ thuật PIVOT trong SQL và UNPIVOT là bước tiến lớn giúp bạn linh hoạt xử lý cấu trúc bảng, sẵn sàng đáp ứng mọi yêu cầu báo cáo và trực quan hóa dữ liệu cho doanh nghiệp.

✍️ Tác giả: Phan Thị Như Phước – Data Analyst tại MCNA Technology School

📞 Hotline: 0939.866.825 (Mr. Minh Khang)

🌐 Website: mcna.vn

📍 Hà Nội: 30 Trung Liệt, Đống Đa | Liền kề 44B TT2 Văn Quán, Hà Đông

📍 TP.HCM: 50B Phan Tây Hồ, Cầu Kiệu

→ Chỉ mục