Không thể sử dụng các hàm tổng hợp do người dùng định nghĩa trong mệnh đề Oracle PIVOT.Các hàm tổng hợp do người dùng định nghĩa trong mệnh đề Oracle PIVOT
Tôi đã tạo hàm tổng hợp do người dùng xác định được gọi là string_agg.
tôi có thể sử dụng nó trong một tuyên bố đơn giản như ...
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
Kết quả trong:
ID TYPE STRING_AGG(VALUE)
user1 CAR Audi,BMW
user1 COMPUTER Dell,Sony
user2 CAR Honda
user2 COMPUTER HP
Tuy nhiên khi tôi cố gắng sử dụng các chức năng tương tự trong một điều khoản trục
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));
tôi nhận được như sau lỗi ...
ORA-56902: expect aggregate function inside pivot operation
Dự kiến kết quả là ...
TYPE USER1 USER2
COMPUTER Dell,Sony HP
CAR Audi,BMW Honda
"id chọn, string_agg (giá trị) từ bảng 1" sẽ cung cấp lỗi ORA-00937 do bạn không có nhóm theo mệnh đề. Bạn có thể cho chúng tôi một ví dụ hoàn chỉnh về một số sql với trục xoay và hàm tổng hợp của bạn trong đó không thành công. – Gerrat
Cảm ơn bạn đã phản hồi. Đã chỉnh sửa bài đăng gốc để cung cấp ví dụ chi tiết – nick
Có vẻ như bạn đang sử dụng hàm string_agg từ đây: http://www.oracle-base.com/articles/misc/StringAggregationTechniques.php. Tôi không thể tìm thấy lý do nào cho việc này thất bại. Có thể một lỗi (có thể trục không hoạt động với các hàm tổng hợp do người dùng xác định)? Nếu bạn thay đổi sự xuất hiện thứ 2 của string_agg thành 'max', nó cho kết quả bạn muốn mặc dù – Gerrat