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
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ử
PIVOTlàpaper_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 ___