【发布时间】:2012-06-08 17:17:27
【问题描述】:
我一直在寻找不同选项(PIVOT、CROSS JOIN 等)的几个小时,以使用 SQL Server 2008 将未知数量的行转换为未知数量的列,而我比以前更迷失了开始了。
基本上我有 3 张桌子:
角色
|id| name|
| 1|role1|
| 2|role2|
| 3|role3|
动作
|id| name |
| 1|action1|
| 2|action2|
| 3|action3|
角色动作
|roleId| actionId|
| 1 | 1 |
| 1 | 2 |
| 2 | 1 |
| 3 | 2 |
是否可以构建一个查询或 SP,将LEFT JOIN 的结果转换为一个不错的“数据透视”表,如下所示:
|actionId|actionName|role1|role2|role3|.....|role n|
| 1 | action1 | 1 | 1 | 0 |.....| 0 |
| 2 | action2 | 1 | 0 | 1 |.....| 0 |
| 3 | action3 | 0 | 0 | 0 |.....| 0 |
| . | . | . | . | . |.....| . |
| . | . | . | . | . |.....| . |
| n | action n | 0 | 0 | 0 |.....| 0 |
非常感谢您的帮助!
【问题讨论】:
-
在此站点中搜索“动态枢轴” - 您所追求的模式已在此处多次解决。
-
@AaronBertrand 非常感谢,我现在已经成功了。只是知道它是如何被调用的。我喜欢“动态支点”!
标签: sql-server sql-server-2008 pivot crosstab