Sua atualização é equivalente a isso.
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 ) ;
Mas eu não recomendo isto. Armazenar os registros como valores separados por vírgulas certamente causará problemas para você no futuro. Use-o apenas para exibir os resultados usando uma consulta como abaixo. Isso pressupõe que em sua tabela de dias haja linhas exclusivas para cada dia. Se houver duplicatas,
join
para o conjunto de resultados distinto de dias. 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