Il tuo aggiornamento equivale a questo.
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 ) ;
Ma io non lo consiglierei questo. La memorizzazione dei record come valori separati da virgola è destinata a causare problemi in futuro. Usalo solo per visualizzare i risultati utilizzando una query come di seguito. Ciò presuppone che nella tabella dei giorni ci siano righe univoche per ogni giorno. Se sono presenti duplicati, join
al risultato distinto impostato da giorni.
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