У меня есть таблица с именем TABLE, например, похожая на:
ID | email
--------------
1 | a@a.com
1 | b@b.com
2 | c@c.com
3 | d@d.com
3 | e@e.com
и я хотел бы вернуть что-то вроде
ID | email1 | email2
--------------------
1 | a@a.com| b@b.com
2 | c@c.com|
3 | d@d.com| e@e.com
Мне было интересно, как я могу использовать поворот, чтобы помочь мне избавиться от повторяющихся строк идентификаторов и просто добавить дополнительный столбец для их других электронных писем. Спасибо за помощь.
SELECT id, email1, email2, email3
FROM (
SELECT id,
email,
ROW_NUMBER() OVER (PARTITION BY id ORDER BY email) AS emailRank
FROM TABLE
)
pivot( max(email) FOR emailRank IN (1 as email1, 2 as email2, 3 as email3));
Редактировать: исправлено выше благодаря ответу пляжа