Twoja aktualizacja jest odpowiednikiem tego.
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 ) ;
Ale nie polecam ten. Przechowywanie rekordów jako wartości oddzielonych przecinkami na pewno przysporzy Ci problemów w przyszłości. Używaj go tylko do wyświetlania wyników za pomocą zapytania takiego jak poniżej. Zakłada się, że w tabeli dni istnieją unikalne wiersze dla każdego dnia. Jeśli występują duplikaty, join
go do odrębnego zestawu wyników z dni.
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