Вашата актуализация е еквивалентна на тази.
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 ) ;
Но аз не бих препоръчал това. Съхраняването на записите като стойности, разделени със запетая, непременно ще ви създаде проблеми в бъдеще. Използвайте го само за показване на резултатите чрез заявка като по-долу. Това предполага, че във вашата таблица с дни има уникални редове за всеки ден. Ако има дубликати, join
го към отделния набор от резултати от дни.
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