Bắt đầu ngayBắt đầu miễn phí

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

Trong bài học này, bạn đã học rằng PIVOT sẽ chuyển các giá trị duy nhất từ một cột thành nhiều cột.

Khi phân tích dữ liệu của paper_shop_monthly_sales, bạn nhận ra cấu trúc của bảng này không phù hợp với báo cáo bạn muốn tạo.

Bạn muốn tạo một báo cáo có dạng như sau:

|year_of_sale|notebooks|pencils|crayons|
|------------|---------|-------|-------|
| 2018       | 150     | 150   | 80    |
| 2019       | 230     | 130   | 170   |

Nói cách khác, bạn muốn chuyển dữ liệu hiện đang nằm ở các hàng thành dữ liệu ở các cột, và cộng tổng số đơn vị theo từng năm.

Như bạn đã học ở các bài tập trước, tên sản phẩm và số đơn vị cần được tách ra. Việc này được thực hiện trong truy vấn con (subselect), hãy xem qua phần đó.

Bài tập này là một phần của khóa học

Làm sạch dữ liệu trong cơ sở dữ liệu SQL Server

Xem khóa học

Hướng dẫn bài tập

  • Chọn các cột đã pivot cho từng sản phẩm.
  • Đưa phép cộng tổng số đơn vị vào bên trong toán tử PIVOT.
  • Sau mệnh đề FOR, thêm tên cột chứa các giá trị sẽ trở thành tiêu đề cột.
  • Đặt tên cho toán tử PIVOTpaper_shop_pivot.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

SELECT
	year_of_sale,
    -- Select the pivoted columns
	___, 
	___, 
	___
FROM
   (SELECT 
		SUBSTRING(product_name_units, 1, charindex('-', product_name_units)-1) product_name, 
		CAST(SUBSTRING(product_name_units, charindex('-', product_name_units)+1, len(product_name_units)) AS INT) units,	
		year_of_sale
	FROM paper_shop_monthly_sales) sales
-- Sum the units for column that contains the values that will be column headers
PIVOT (SUM(___) FOR ___ IN (notebooks, pencils, crayons))
-- Give the alias name
AS ___
Chỉnh sửa và Chạy Mã