Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

subquery Подзапрос используется только в сочетании с ключевым словом 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

Ответ 2

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