web-dev-qa-db-ja.com

サブクエリを使用したOracle PIVOT句の例

Oracleの PIVOT句の定義 は、IN句でサブクエリを定義する可能性があることを指定します。私がこれを想像する架空の例はこれです

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

ただし、その場合、ORA-00936: Missing expressionエラー。残念ながら、この新しいPIVOT句からのエラーは、通常かなり不可解です。 IN句のPIVOT句でサブクエリを使用する方法の良い例を教えてもらえますか?

23
Lukas Eder

どうやら、ドキュメンテーションの最後まで読むのが面倒でした...さらにダウンして、ドキュメンテーションの状態:

サブクエリサブクエリは、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

23
Lukas Eder

同様の要件がありました。 pl sqlを介してこれを達成し、動的sqlを作成し、ピボットIN句に追加しました。もちろん、ピボットクエリも動的SQLでした。ただし、通常のピボット句では、sqlを使用してこれを行うことはできません。

0
Harshita