Bảng scores(student, toan, ly, hoa) lưu điểm ba môn của mỗi sinh viên theo dạng bảng ngang (mỗi môn một cột).
Hãy chuyển vị (UNPIVOT) về dạng dài: mỗi dòng gồm student, subject (tên môn) và score (điểm tương ứng). Tên môn xuất ra đúng chuỗi 'toan', 'ly', 'hoa'. Bỏ qua những ô điểm NULL (sinh viên chưa có điểm môn đó). Sắp xếp theo student tăng dần, rồi theo score giảm dần, nếu vẫn bằng thì theo subject tăng dần.
Yêu cầu: dùng toán tử UNPIVOT của SQL Server.
Ví dụ: dòng (An, 8, 9, NULL) tách thành An ly 9 và An toan 8 (môn hoa NULL bị bỏ).
Bảng scores đã được tạo sẵn. Cột: student NVARCHAR, toan INT NULL, ly INT NULL, hoa INT NULL.
Số sinh viên ≤30, 0≤score≤100.
Mỗi cặp (sinh viên, môn có điểm) một dòng gồm 3 cột (cách nhau bởi TAB): student, subject, score; thứ tự: student tăng, score giảm, subject tăng.
Ví dụ:
Đầu vào:
CREATE TABLE scores(student NVARCHAR(50), toan INT, ly INT, hoa INT);
INSERT INTO scores(student,toan,ly,hoa) VALUES (N'An',8,9,NULL),(N'Binh',7,7,5);
Đầu ra:
An ly 9
An toan 8
Binh ly 7
Binh toan 7
Binh hoa 5
Giải thích:
Đang tải editor...