Erste Setup die Beispieldaten in einer SQL-Skript
Declare @User table (ID int, Username varchar(50))
Insert Into @User (id, username) values (1,'A')
Insert Into @User (id, username) values (2,'B')
Insert Into @User (id, username) values (3,'C')
Insert Into @User (id, username) values (4,'D')
Declare @role table (ID int, UserID int, Role varchar(50), Status varchar(50), Expiration DateTime)
Insert Into @role (id, UserID, Role, Status, Expiration) values (1, 1, 'Admin', 'Active', '01-01-2011')
Insert Into @role (id, UserID, Role, Status, Expiration) values (2, 2, 'Client', 'Active', '02-02-2011')
Insert Into @role (id, UserID, Role, Status, Expiration) values (3, 3, 'Applicant', 'Active', '03-03-2011')
Insert Into @role (id, UserID, Role, Status, Expiration) values (4, 4, 'Client', 'Inactive', '04-04-2011')
Dann legte unter der folgenden Eigenschaften und die Menge laufen, werden Sie sehen, warum es nicht ein sehr schöne Art, Pivot zu benutzen.
SELECT
[A], [B], [C], [D]
FROM
(Select Username, Role, Status, Expiration
FROM @User u
Inner Join @role r
On u.ID = r.UserID) AS SourceTable
PIVOT
(
Max(Role)
FOR Username IN ([A], [B], [C], [D])
) AS PivotTable1;
Ausgabe
Admin NULL NULL NULL
NULL Client NULL NULL
NULL NULL Applicant NULL
NULL NULL NULL Client
Essentiatilly Sie benötigen mehrere schwenkt zu kombinieren um den gewünschten Effekt zu bekommen, und es Gruppen alle Benutzer in einer einzigen Zeile, so dass es nicht ein sehr einfaches Ergebnis macht einstellen.
Haben Sie die Verwendung von For XML in Betracht gezogen?
Select Username, Role, Status, Expiration
FROM @User u
Inner Join @role r
On u.ID = r.UserID
For XML Auto
Ausgang ...
<u Username="A">
<r Role="Admin" Status="Active" Expiration="2011-01-01T00:00:00" />
</u>
<u Username="B">
<r Role="Client" Status="Active" Expiration="2011-02-02T00:00:00" />
</u>
<u Username="C">
<r Role="Applicant" Status="Active" Expiration="2011-03-03T00:00:00" />
</u>
<u Username="D">
<r Role="Client" Status="Inactive" Expiration="2011-04-04T00:00:00" />
</u>
Wenn dies für einen Bericht ist, oder etwas ähnliches, sollten Sie besser tun, um diese Art zu tun, von der Formatierung in Ihrem Reporting-Tool und nicht in SQL. In SQL sind die Werte in jeder Spalte immer vom gleichen Typ - aber in Ihren Spalten sind Text und Daten vermischt. –