PIVOT gebruiken U kunt het volgende doen
With SampleData AS
(
SELECT 'Team1' as Team , 'example@sqldat.com' as email, 'A' as Groups
UNION SELECT 'Team1' as Team , 'example@sqldat.com' as email, 'B' as Groups
UNION SELECT 'Team1' as Team , 'example@sqldat.com' as email, 'C' as Groups
UNION SELECT 'Team2' as Team , 'example@sqldat.com' as email, 'A' as Groups
UNION SELECT 'Team2' as Team , 'example@sqldat.com' as email, 'B' as Groups
UNION SELECT 'Team2' as Team , 'example@sqldat.com' as email, 'C' as Groups
)
SELECT Team, A, B,C FROM
(SELECT * FROM SampleData) source
PIVOT
(MAX(email) FOR Groups IN ([A], [B], [C]) )as pvt
Produceert
Team A B C
----- ---------------- ---------------- ----------------
Team1 example@sqldat.com example@sqldat.com example@sqldat.com
Team2 example@sqldat.com example@sqldat.com example@sqldat.com
Zie een werkend Data.SE-voorbeeld
In een DB die PIVOT niet ondersteunt, kun je in plaats daarvan meerdere joins aan je tafel doen. Hoewel je dat misschien toch wilt, want zoals GBN al aangaf, omdat we geen aggregaat gebruiken.
With SampleData AS
(
SELECT 'Team1' as Team , 'example@sqldat.com' as email, 'A' as Groups
UNION SELECT 'Team1' as Team , 'example@sqldat.com' as email, 'B' as Groups
UNION SELECT 'Team1' as Team , 'example@sqldat.com' as email, 'C' as Groups
UNION SELECT 'Team2' as Team , 'example@sqldat.com' as email, 'A' as Groups
UNION SELECT 'Team2' as Team , 'example@sqldat.com' as email, 'B' as Groups
UNION SELECT 'Team2' as Team , 'example@sqldat.com' as email, 'C' as Groups
)
SELECT
source.Team,
A.email,
B.email,
C.email
FROM
(SELECT DISTINCT TEAM From SampleData) source
LEFT JOIN SampleData A
ON source.Team = A.Team
AND A.GROUPS = 'A'
LEFT JOIN SampleData B
ON source.Team = B.Team
AND B.GROUPS = 'B'
LEFT JOIN SampleData C
ON source.Team = C.Team
AND C.GROUPS = 'C'
Zie een werkend Data.SE-voorbeeld