Я пытаюсь создать запрос для переноса строк в столбцы с помощью функции PIVOT.Oracle SQL Developer: как переносить строки в столбцы с помощью функции PIVOT
Это contact
стол я хочу перенести в ряды:
PARTYID CONTACTTEXT CONTACTTYPECD
---------- ------------ -------------
100 0354441010 1
100 0355551010 2
100 0428105789 3
100 [email protected] 4
Мой предполагаемый результат:
PARTYID PHONE FAX MOBILE EMAIL
---------- ------------ ------------ ------------ ------------
100 0354441010 0355551010 0428105789 [email protected]
Мой запрос:
SELECT * FROM
(
SELECT partyId, contacttext, contacttypecd
FROM CONTACT
WHERE partyId = 100;
)
PIVOT (
MAX(contacttext)
FOR contacttypecd in (1 Phone, 2 Fax, 3 Mobile, 4 Email));
Ошибки я получаю:
Error starting at line 9 in command:
FOR contacttypecd in (1 Phone, 2 Fax, 3 Mobile, 4 Email))
Error report:
Unknown Command
Причина моей проблемы состояла в том, что моя версия базы данных Oracle (Oracle9i) не поддерживала функцию PIVOT. Вот как это сделать по-другому:
SELECT PartyCD
,MAX(DECODE(t.contacttypecd, 1, t.contacttext)) Phone
,MAX(DECODE(t.contacttypecd, 2, t.contacttext)) Fax
,MAX(DECODE(t.contacttypecd, 3, t.contacttext)) Mobile
,MAX(DECODE(t.contacttypecd, 4, t.contacttext)) Email
FROM
(
SELECT partyid, contacttext, contacttypecd
FROM CONTACT
WHERE partyid = 100
) t
GROUP BY PartyID
Я удалил точку с запятой после строки WHERE party = 100 и теперь имеет следующую ошибку: 'ORA-00933: команда SQL не выполнена должным образом' ' 00933. 00000 - «SQL-команда не выполнена должным образом» ' ' * Причина: ' ' * Действие: ' ' Ошибка в строке: 7 Столбец: 8' – user1309226
Нашел причину моей проблемы: моя версия базы данных Oracle - это Oracle9i, которая не поддержка функции PIVOT. – user1309226