Ich habe 3 Tabellen, sie sind Events
, SignOffs
und Users
.Wie bekomme ich SQL, um Spalten an die Ergebnismenge anzuhängen, anstatt weitere Zeilen hinzuzufügen?
Events
hat die Felder EventId
(PK, int, autoincrement) und EventTitle
(nvarchar (50)).
SignOffs
hat die Felder SignOffId
(PK, int, Autoinkrement), EventId
(FK bis Events.EventId
) und SignedOffByUserId (FK bis Users.UserId
).
Users
hat die Felder UserId
(PK, int, autoincrement) und UserName
(nvarchar (50)).
mag ich so etwas wie dies zu tun:
SELECT [Events].EventId, EventTitle, UserName
FROM [Events]
INNER JOIN [SignOffs] ON [Events].EventId = [SignOffs].EventId
INNER JOIN [Users] ON [SignOffs].SignedOffByUserId = [Users].UserId
Das Problem mit der oben ist, dass Sie eine Zeile für jede Person erhalten, die abgezeichnet, so dass ein bestimmtes Ereignis kann mehrfach in der Liste wiederholt werden, wenn mehrere Leute haben sich abgemeldet.
Ich möchte Spalten für jede Person hinzufügen, die sich für ein Ereignis abgemeldet hat. So ist die Ergebnismenge sollte für eine Veranstaltung wie folgt aussehen, wo 3 Personen abgezeichnet:
EventId
- EventTitle
-SignedOffByUser1
- SignedOffByUser2
- SignedOffByUser3
Ich habe keine Ideen, wie dies getan werden kann, und ich Ich bin mir nicht einmal sicher, wie ich das Problem prägnant formulieren kann, um nach Antworten zu suchen.
Google: "SQL Server Pivot". –