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.