PDM: Kann man die PDM-Benutzer-Gruppen-Zuordnung pivotisiert darstellen?

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 AS VARCHAR(MAX)

DECLARE @MemberTable AS VARCHAR(MAX)

 

SELECT @ColumnGroups = COALESCE(@ColumnGroups + ‘,’,) + QUOTENAME(Groupname)

FROM (SELECT DISTINCT Groupname from #MemberCheck) AS B

ORDER BY 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)

drop table #MemberCheck

 

Als Ergebnis erhält man z. B. das nachstehende Ergebnis: