Пример предложения Oracle PIVOT с подзапросом

Oracle определение предложения PIVOT указывает, что существует возможность определить вложенный запрос в IN предложения. Вымышленный пример того, что я мог бы себе представить, это

... PIVOT (AVG(salary) FOR (company) IN (SELECT DISTINCT company FROM companies))

С этим, однако, я получаю ORA-00936: Missing expression ошибка. К сожалению, ошибки от этого нового PIVOT предложение обычно довольно загадочное. Может кто-нибудь дать мне хороший пример того, как подзапрос может быть использован в IN статьи PIVOT предложения?

2 ответов


по-видимому, я был слишком ленив, чтобы читать до конца документации... Далее в документации говорится:

подзапрос подзапрос используется только в сочетании с ключевым словом XML. При указании подзапроса все значения, найденные подзапросом, используются для поворота. [...]

Это будет работать

PIVOT XML (AVG(salary) FOR (company) IN (SELECT DISTINCT company FROM companies))

посмотреть полный документация

http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_10002.htm#CHDFAFIE


У меня было аналогичное требование. Я достиг этого с помощью PL sql написал динамический sql и добавил его в предложение pivot IN. Конечно, pivot query также был динамическим sql. Но в обычном предложении pivot это невозможно, используя sql.