【发布时间】:2014-03-05 18:03:51
【问题描述】:
我有一个权限系统,它定义了用户对某些项目的访问权限。
我需要一个报告页面来显示成员及其对项目的访问权限。
表格需要是这样的:
+---------+--------+--------+------+--------+
| Members | Item 1 | Item 2 | .... | Item N |
+---------+--------+--------+------+--------+
| Member1 | x | + | .... | + |
+---------+--------+--------+------+--------+
| Member2 | + | x | .... | + |
+---------+--------+--------+------+--------+
我有一个 3 表连接查询,用于列出成员和他们可以访问的项目,但我无法将其转换为数据透视语法。
Select members.id memberID, members.name memberName, items.name as item
From members
Left Join member_permission On memberID = members.id
Left Join items On items.id = member_permission.itemID
这是我的无效查询:
Select memberName, itemName
From (
select members.id, members.name, item.name as itemName
from members
Left Join member_permission On memberID = members.id
Left Join item On item.id = member_permission.itemID
) p
Unpivot
(itemName For name IN (item.name)) as unp
以及我收到的错误:
UNPIVOT 运算符中指定的列名“name”与 UNPIVOT 参数中的现有列名冲突。
我创建了一个例子来玩Sqlfiddle
【问题讨论】:
标签: sql sql-server pivot unpivot