sql >> Database >  >> RDS >> Oracle

LISTAGG Query ORA-00937:geen groepsfunctie voor één groep

Ik denk dat om uw zoekopdracht te laten werken, u een group by moet toevoegen , verander de order by . U moet ook de juiste expliciete syntaxis voor joins gebruiken:

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;

Of misschien wilt u een ander kenmerk in de resultaten opnemen:

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. Een nieuwe gebruiker maken en machtigingen verlenen in MySQL

  2. Eenvoudige query om maximale waarde voor elke ID te verkrijgen

  3. Databasebeveiliging 101:beveiliging in open source-databases

  4. MySQL-trigger om een ​​veld bij te werken naar de waarde van id