Menu
CoddyTech

Chuyển hàng thành cột

Thuộc phần Vượt ra ngoài kiến thức cơ bản trong hành trình SQL của Coddy. Bài học 14 trên 27.

Kết hợp phép tổng hợp có điều kiện (conditional aggregation) với GROUP BY để biến các hàng thành cột. Đây là phiên bản SQL của bảng tổng hợp động trong bảng tính.

Giả sử sales có các hàng như (month, product, units). Để xem mỗi tháng một hàng và mỗi sản phẩm một cột:

SELECT
    month,
    SUM(CASE WHEN product = 'A' THEN units ELSE 0 END) AS product_a,
    SUM(CASE WHEN product = 'B' THEN units ELSE 0 END) AS product_b
FROM sales
GROUP BY month

Nhóm mà SUM(CASE …) nhìn thấy khi dùng GROUP BY gồm các hàng của một tháng; CASE chọn phần dữ liệu của một sản phẩm.

challenge icon

Thử thách

Dễ

Các bảng và cột hiện có:

  • sales: month, product, units

Chuyển đổi dữ liệu để mỗi hàng tương ứng với một month và có các cột sau:

  • month
  • apples: tổng units của sản phẩm 'apples' trong tháng đó
  • bananas: tương tự với 'bananas'
  • cherries: tương tự với 'cherries'
  • total: tổng units của tất cả sản phẩm trong tháng đó

Chỉ trả về những tháng có total ít nhất là 20. Sắp xếp theo month.

Tự làm thử

SELECT month,
       -- mỗi sản phẩm dùng một SUM(CASE ...), cộng thêm tổng
FROM sales
GROUP BY month
-- lọc các tháng có tổng >= 20
ORDER BY month
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Vượt ra ngoài kiến thức cơ bản

Tự luyện tập: Playground SQL