Votre mise à jour est équivalente à ceci.
UPDATE schedules s
SET days = (SELECT LISTAGG(day, ', ')
within group ( ORDER BY day_order )
FROM days d
WHERE d.schedule IN ( 'Weekend', 'Weekday' )
AND d.schedule = s.schedule
GROUP BY d.schedule ) ;
Mais, je ne recommanderais pas cette. Le stockage des enregistrements sous forme de valeurs séparées par des virgules est susceptible de vous causer des problèmes à l'avenir. Utilisez-le uniquement pour afficher les résultats à l'aide d'une requête comme ci-dessous. Cela suppose que dans votre table de jours, il y a des lignes uniques pour chaque jour. S'il y a des doublons, join
à l'ensemble de résultats distinct de jours.
SELECT d.id,
d.schedule,
LISTAGG(s.day, ', ')
within GROUP ( ORDER BY d.day_order )
FROM days d
join schedules s
ON ( d.schedule = s.schedule )
WHERE d.schedule IN ( 'Weekend', 'Weekday' )
GROUP BY d.id,
d.schedule