Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Truy vấn LISTAGG ORA-00937:không phải là một hàm nhóm đơn

Tôi nghĩ để truy vấn của bạn hoạt động, bạn cần thêm nhóm group by , thay đổi order by . Bạn cũng nên sử dụng cú pháp nối rõ ràng thích hợp:

SELECT r.rule_id as RULE_ID, 
       LISTAGG(a.ATTRIBUTE_ID, ', ') WITHIN GROUP (ORDER BY a.ATTRIBUTE_ID) as "ATTR_IDS"
FROM N_RULE r JOIN
     N_ATTRIBUTE a 
     ON r.RULE_ID = a.RULE_ID 
GROUP BY r.rule_id
ORDER BY r.rule_id;

Hoặc, có thể bạn muốn đưa thuộc tính khác vào kết quả:

SELECT r.rule_id, r.AUDIENCE, UPPER(r.NAME) 
       LISTAGG(a.ATTRIBUTE_ID, ', ') WITHIN GROUP (ORDER BY a.ATTRIBUTE_ID) as "ATTR_IDS"
FROM N_RULE r JOIN
     N_ATTRIBUTE a 
     ON r.RULE_ID = a.RULE_ID 
GROUP BY r.rule_id, r.AUDIENCE, UPPER(r.NAME)
ORDER BY r.AUDIENCE, UPPER(r.NAME);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Con trỏ cho vòng lặp với câu lệnh SQL động

  2. Liệt kê tất cả các trình kích hoạt trong Cơ sở dữ liệu Oracle

  3. in ngày bắt đầu và ngày kết thúc trong một hàng cho các phạm vi ngày liên tục hoặc trùng lặp trong SQL tiên tri

  4. Không thể tải DLL “OraOps10.dll”

  5. Chèn vào từ CTE