Su actualización es equivalente a esto.
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 ) ;
Pero, no recomendaría este. Almacenar los registros como valores separados por comas seguramente le causará problemas en el futuro. Úselo solo para mostrar los resultados usando una consulta como la siguiente. Esto supone que en su tabla de días hay filas únicas para cada día. Si hay duplicados, join
al conjunto de resultados distinto de días.
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