Это будет работать до 5 авторов на ContentId
, если вам нужно разрешить произвольные суммы, вам нужно будет использовать динамический SQL
;WITH ContentAuthor(ContentID, AuthorName) AS
(
SELECT 1,'Joe' UNION ALL
SELECT 1,'John' UNION ALL
SELECT 1,'Mary' UNION ALL
SELECT 2,'John' UNION ALL
SELECT 2,'Dan' UNION ALL
SELECT 3,'Sam'
),T AS
(
SELECT *,
ROW_NUMBER() OVER (PARTITION BY ContentID ORDER BY (SELECT 0)) RN
FROM ContentAuthor
)
SELECT ContentID,
[1] AS Author1,
[2] AS Author2,
[3] AS Author3,
[4] AS Author4,
[5] AS Author5
FROM T
PIVOT(MAX(AuthorName) FOR RN IN ([1],[2],[3],[4],[5])) AS Pvt;