0
我有一个权限系统,用于定义用户对特定项目的访问权限。SQL Query&unpivot语法
我需要一个报告页面来显示成员及其对项目的访问权限。
的表需要是这样的:
+---------+--------+--------+------+--------+
| 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操作冲突
列名“名”指定与现有UNPIVOT参数中的列名称。
我创建了一个例子与Sqlfiddle
感谢您的回答,一个一个细节;我怎样才能使用项目名称作为列名?即:“蓝色项目,红色项目”而不是“项目1,项目2” – dvdmn
@dvdnhm您仍然可以使用相同的过程,但不是使用'rownumber()'生成列的列表,您可以使用你的专栏。 – Taryn