Sử dụng PIVOT Bạn có thể làm như sau
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
Sản xuất
Team A B C
----- ---------------- ---------------- ----------------
Team1 example@sqldat.com example@sqldat.com example@sqldat.com
Team2 example@sqldat.com example@sqldat.com example@sqldat.com
Xem ví dụ về Data.SE đang hoạt động
Trong một DB không hỗ trợ PIVOT, thay vào đó, bạn có thể thực hiện nhiều phép nối vào bảng của mình. Mặc dù bạn có thể muốn, nhưng như GBN đã chỉ ra, vì chúng tôi không sử dụng tổng hợp.
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'
Xem ví dụ về Data.SE đang hoạt động