Tôi lấy cái này từ cuốn sách Nghệ thuật SQL , trang 284-286:
Giả sử tên bảng của bạn là foo .
Đầu tiên, tạo một bảng có tên pivot :
CREATE Table pivot (
count int
);
Chèn vào bảng đó bao nhiêu hàng tùy theo cột mà bạn muốn xoay trong foo . Vì bạn có ba cột trong foo mà bạn muốn xoay, hãy tạo ba hàng trong bảng tổng hợp:
insert into pivot values (1);
insert into pivot values (2);
insert into pivot values (3);
Bây giờ hãy thực hiện phép nối Descartes giữa foo và pivot , sử dụng CASE để chọn đúng cột dựa trên số lượng:
SELECT foo.id, Case pivot.count
When 1 Then cat
When 2 Then one_above
When 3 Then top_level
End Case
FROM foo JOIN pivot;
Điều này sẽ cung cấp cho bạn những gì bạn muốn.