Frage:
Kann man die PDM-Benutzer-Gruppen-Zuordnung pivotisiert darstellen, d. h. für jeden Benutzer eine Zeile und für jede Gruppe eine Spalte?
Antwort:
Ja, mit Hilfe einer SQL-Abfrage kann dies abgefragt werden:
select U.Username, G.Groupname, GM.IsMember INTO #MemberCheck
from Users U, Groups G, GroupMembers GM
where U.UserID > 1
and U.Enabled = 1
and G.GroupID > 1
and GM.GroupID = G.GroupID
and GM.UserID = U.UserID
DECLARE @ColumnGroups ASVARCHAR(MAX)
DECLARE @MemberTable ASVARCHAR(MAX)
SELECT @ColumnGroups =COALESCE(@ColumnGroups + ',','')+ QUOTENAME(Groupname)
FROM(SELECTDISTINCT Groupname from #MemberCheck)AS B
ORDERBY B.Groupname
SET @MemberTable = '
WITH PivotData AS
(
SELECT Username, Groupname, Ismember
FROM #MemberCheck
)
select Username, '+ @ColumnGroups +' from PivotData
PIVOT (COUNT(IsMember) for Groupname IN ('+ @ColumnGroups +')) AS PVTTable
ORDER BY Username'
EXEC(@MemberTable)
droptable #MemberCheck
Als Ergebnis erhält man z. B. das nachstehende Ergebnis: