Проблема SQL-запроса - PullRequest
       0

Проблема SQL-запроса

0 голосов
/ 23 апреля 2011

У меня есть сценарий, в котором мне нужно преобразовать строки в столбцы.Мне, вероятно, нужно использовать PIVOT, но я не смог выяснить это.

Вот упрощенная версия того, что у меня есть: Таблица: ContentAuthor

ContentID | AuthorName
----------------------
1         | Joe
1         | John
1         | Mary
2         | John
2         | Dan
3         | Sam

Что яхотел бы получить:

ContentID | Author1  | Author2  | Author3  | Author4  | Author5
-----------------------------------------------------------------
1         | Joe      | John     | Mary     |          |
2         | John     | Dan      |          |          |
3         | Sam      |          |          |          |

На данный момент меня не особо интересует порядок их появления.

Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 23 апреля 2011

Это будет работать до 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...