Vaše aktualizace je ekvivalentní tomuto.
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 to bych nedoporučoval tento. Ukládání záznamů jako hodnot oddělených čárkami vám v budoucnu jistě způsobí problémy. Použijte jej pouze k zobrazení výsledků pomocí dotazu, jak je uvedeno níže. To předpokládá, že ve vaší tabulce dnů jsou pro každý den jedinečné řádky. Pokud existují duplikáty, join
na rozdílnou sadu výsledků ze dnů.
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