Oracle
 sql >> Datenbank >  >> RDS >> Oracle

LISTAGG-Abfrage ORA-00937:keine Einzelgruppen-Gruppenfunktion

Ich denke, damit Ihre Abfrage funktioniert, müssen Sie eine group by hinzufügen , ändern Sie die order by . Sie sollten auch die richtige explizite Join-Syntax verwenden:

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;

Oder Sie möchten möglicherweise andere Attribute in die Ergebnisse aufnehmen:

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);