Oracle
 sql >> Base de données >  >> RDS >> Oracle

ORACLE/SQL :wm_concat &trier par

Pour tous ceux qui utilisent encore wm_CONCAT (c'est-à-dire les anciennes versions de la base de données) :la solution consiste à ajouter une condition distincte, elle appliquera également l'ordre croissant aux valeurs concaténées.

Ne demandez pas pourquoi ce n'est pas documenté, mais cela fonctionnera.

De plus, l'utilisation d'un ordre par dans une sous-requête, avant wm_concat, ne fera que randomiser l'ordre, donc cela n'aurait pas dû être recommandé.

Exemple pour le SQL demandé :

SELECT TASK_CARD, WM_CONCAT(distinct code) as ZONES
FROM ODB.TASK_CARD_CONTROL
WHERE ODB.TASK_CARD_CONTROL.CONTROL_CATEGORY = 'ZONE'
GROUP BY TASK_CARD;

Sachez simplement que l'option distinct ne fonctionne pas lorsqu'elle est utilisée dans des procédures/packages .