У меня есть таблица с именем TABLE, например, выглядит как:Oracle10g SQL поворота
ID | email
--------------
1 | [email protected]
1 | [email protected]
2 | [email protected]
3 | [email protected]
3 | [email protected]
, и я хотел бы вернуть что-то вроде
ID | email1 | email2
--------------------
1 | [email protected]| [email protected]
2 | [email protected]|
3 | [email protected]| [email protected]
мне было интересно, как я мог бы использовать поворачиваясь, чтобы помочь мне избавиться от повторяющихся строк ID и просто добавить дополнительный столбец для других своих писем. Спасибо за помощь.
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));
Edit: закрепился выше благодаря ответу пляжного
Большое спасибо. Это работает так, как мне нужно. Однако, когда я пытаюсь использовать метод поворота, я получаю выражение MISSING, где [1] AS email1 в первой строке ... Не возражаете ли вы объяснить, что не так с моим синтаксисом? – bph
добавил код, который, я считаю, исправит исходный опорный запрос OP. Маленькая опечатка (nax vs max) и отсутствует ")". Также заменил [1] на 1. – beach
Извините, что это были опечатки только в моем посте. Однако использование этих 1, 2, 3, похоже, не работает. Я получаю запрос, но он выглядит как email1 с 1, электронной почтой 2 с 2 и т. Д. Он не показывает электронные письма, такие как [email protected] – bph