Bạn đã đọc tài liệu về PIVOT chưa trong Microsoft SQL Server 2005?
SELECT CustId,
[1] AS Admin,
[2] AS Manager,
[3] AS Support,
[4] AS Assistant
FROM (SELECT c.CustId, r.RoleId
FROM CustomerRoles c JOIN Roles r USING (RoleId)) AS s
PIVOT (
COUNT(CustId)
FOR RoleId IN ([1], [2], [3], [4])
) AS pvt
ORDER BY CustId;
Tôi đã không thử nghiệm ở trên, nhưng chỉ dựa trên tài liệu. Điều này có thể giúp bạn bắt đầu.
Dường như không có cách nào để tạo các cột một cách động. Bạn phải mã hóa chúng.