Oracle
 sql >> Baza danych >  >> RDS >> Oracle

LISTAGG Query ORA-00937:nie jest to funkcja pojedynczej grupy

Myślę, że aby Twoje zapytanie zadziałało, musisz dodać group by , zmień order by . Powinieneś także użyć odpowiedniej składni jawnego łączenia:

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;

Ewentualnie chcesz uwzględnić inny atrybut w wynikach:

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. Jak uzyskać dane wejściowe od użytkownika w czasie wykonywania?

  2. Zaktualizuj wiele kolumn w instrukcji MERGE ORACLE

  3. Rozwiązanie problemu Drop Column Bug w Oracle 18c i 19c

  4. Zwiększ wydajność dzięki zbiorczemu odbiorowi w Oracle

  5. co dzieje się w fazie przecięcia adop w R12.2