如何在SQL中进行透视

Pic*_*ght 1 sql pivot sql-server-2005

我不确定这是否会被称为旋转.

我的SQL 2005表[CustromerRoles]中的数据是这样的:

CustId  RoleId
2        4
2        3
3        4
4        1
4        2
Run Code Online (Sandbox Code Playgroud)

[角色]表:

RoleId  Role
1        Admin
2        Manager
3        Support
4        Assistant
Run Code Online (Sandbox Code Playgroud)

我想创建一个视图,以便:

SELECT*FROM [MYVIEW]会给我以下数据:

1和0将是位,以便我可以在UI显示器上显示带有复选框的网格.

CustId  Admin Manager Support Assistant
2         0     0       1        1
3         0     0       0        1
4         1     1       0        0
Run Code Online (Sandbox Code Playgroud)

到目前为止,我不知道如何去做这件事.

Bil*_*win 6

您是否阅读过Microsoft SQL Server 2005中的PIVOT文档?

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;
Run Code Online (Sandbox Code Playgroud)

我没有测试过上面的内容,只是基于doc.这可能会让你开始.

似乎没有办法动态生成列.你必须对它们进行硬编码.