Пример предложения Oracle PIVOT с подзапросом
Oracle определение предложения PIVOT указывает, что существует возможность определить подзапрос в предложении IN
. Вымышленный пример того, что я могу себе представить, - это
... PIVOT (AVG(salary) FOR (company) IN (SELECT DISTINCT company FROM companies))
При этом, однако, я получаю ошибку ORA-00936: Missing expression
. К сожалению, ошибки из этого нового предложения PIVOT
обычно довольно загадочны. Может ли кто-нибудь дать мне хороший пример того, как подзапрос можно использовать в предложении IN
предложения PIVOT
?
Ответы
Ответ 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.