Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi
    solution

    Đề bài: [SQL Server] Tách bảng điểm các môn về dạng dài

    Bảng bangdiem lưu điểm theo dạng rộng (mỗi môn một cột). Phòng đào tạo cần đưa về dạng dài (mỗi dòng một môn) bằng UNPIVOT.

    Cột Kiểu Ý nghĩa
    sinhvien nvarchar(50) Tên sinh viên
    Toan int Điểm Toán
    Ly int Điểm Lý
    Hoa int Điểm Hóa

    Kết quả gồm sinhvien, mon, diem. Dùng UNPIVOT trên ba cột môn.

    • Định dạng đầu vào:

      SETUP SQL tạo bảng bangdiem (dạng rộng) và chèn điểm các môn.

    • Ràng buộc đầu vào:

      Điểm là số nguyên 0..10. Mỗi sinh viên một dòng trong bảng gốc.

    • Định dạng đầu ra:

      Ba cột: sinhvien, mon, diem. Sắp xếp theo sinhvien, mon tăng dần.

    Ví dụ:

    Đầu vào:

    CREATE TABLE bangdiem (sinhvien nvarchar(50), Toan int, Ly int, Hoa int);
    INSERT INTO bangdiem VALUES (N'An',8,7,9),(N'Binh',6,5,7);

    Đầu ra:

    An	Hoa	9
    An	Ly	7
    An	Toan	8
    Binh	Hoa	7
    Binh	Ly	5
    Binh	Toan	6

    Giải thích:

    UNPIVOT tách mỗi sinh viên thành 3 dòng theo môn. An thành (Hoa,9),(Ly,7),(Toan,8) sắp theo tên môn tăng dần.

    Chủ đề

    🗄️ Cơ sở dữ liệuSQL ServerSQL Server: PIVOTTất cả môn học

    Đang tải editor...