Пример предложения Oracle PIVOT с подзапросом - PullRequest
23 голосов
/ 06 января 2012

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

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

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

Ответы [ 2 ]

23 голосов
/ 06 января 2012

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

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

0 голосов
/ 05 сентября 2018

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

...