sql >> Databáze >  >> RDS >> Oracle

Dotaz LISTAGG ORA-00937:není skupinová funkce jedné skupiny

Myslím, že aby váš dotaz fungoval, musíte přidat group by , změňte order by . Měli byste také použít správnou explicitní syntaxi spojení:

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;

Případně chcete do výsledků zahrnout jiný atribut:

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. SQL SELECT AVG

  2. Jak vypočítat denní aktivní uživatele (DAU) v MySQL

  3. Logy komprimovaného archivu PostgreSQL ve Windows

  4. Upgrade MySQL na MariaDB 10 (část 2 – Upgrade MariaDB/MySQL 5.5 na verzi 10.0)