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