Oracle PIVOT句でユーザー定義集計関数を使用できません。Oracle PIVOT句のユーザー定義集計関数
私はstring_aggというユーザ定義の集計関数を作成しました。私は
select * from
(
select id, type, string_agg(value) as value from
(
select 'user1' as id, 'BMW' as value, 'CAR' as type from dual union
select 'user1' as id, 'Audi' as value, 'CAR' as type from dual union
select 'user2' as id, 'Honda' as value, 'CAR' as type from dual union
select 'user1' as id, 'Dell' as value, 'COMPUTER' as type from dual union
select 'user1' as id, 'Sony' as value, 'COMPUTER' as type from dual union
select 'user2' as id, 'HP' as value, 'COMPUTER' as type from dual
)
group by id, type
)
PIVOT (string_agg(value) FOR id IN ('user1' user1, 'user2' user2));
は私が手ピボット句に次のように同じ機能を使用しようとただし
ID TYPE STRING_AGG(VALUE)
user1 CAR Audi,BMW
user1 COMPUTER Dell,Sony
user2 CAR Honda
user2 COMPUTER HP
:私はのような簡単な文でそれを使用することができる午前
...で
select id, string_agg(value) from
(
select 'user1' as id, 'BMW' as value, 'CAR' as type from dual union
select 'user1' as id, 'Audi' as value, 'CAR' as type from dual union
select 'user2' as id, 'Honda' as value, 'CAR' as type from dual union
select 'user1' as id, 'Dell' as value, 'COMPUTER' as type from dual union
select 'user1' as id, 'Sony' as value, 'COMPUTER' as type from dual union
select 'user2' as id, 'HP' as value, 'COMPUTER' as type from dual
)
group by id, type
結果エラー...
ORA-56902: expect aggregate function inside pivot operation
期待結果は...
TYPE USER1 USER2
COMPUTER Dell,Sony HP
CAR Audi,BMW Honda
です
"select id、string_agg(value)from table1"は、group by句を持たないため、ORA-00937エラーが発生します。ピボットを持ついくつかのSQLの完全な例を教えてください。あなたの集約関数は失敗します。 – Gerrat
フィードバックいただきありがとうございます。詳細な例を提供する編集オリジナルの投稿 – nick
ここからstring_agg関数を使用しているようです:http://www.oracle-base.com/articles/misc/StringAggregationTechniques.php。私はこれが失敗する理由を見つけることができません。多分バグかもしれません(おそらく、ピボットはユーザー定義の集計関数では機能しません)? string_aggの2回目の出現を 'max'に変更した場合は、 – Gerrat