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

ORACLE/SQL:wm_concat &bestellen nach

Für alle, die noch wm_CONCAT (alias ältere db-Versionen) verwenden:Die Lösung besteht darin, eine eindeutige Bedingung hinzuzufügen, die dann auch aufsteigende Reihenfolge auf die verketteten Werte anwendet.

Frag nicht, warum es nicht dokumentiert ist, aber es wird funktionieren.

Auch die Verwendung einer Bestellung nach in einer Unterabfrage vor wm_concat wird die Reihenfolge nur zufällig machen, also hätte es nicht empfohlen werden sollen.

Beispiel für das angeforderte SQL:

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;

Seien Sie nur gewarnt, dass die Option "distinct" nicht funktioniert, wenn sie in Prozeduren/Paketen verwendet wird.