sql >> Databáze >  >> RDS >> Oracle

Zobrazení hodnot LISTAGG v buňce na základě hodnoty jiného sloupce

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 


  1. Jak připojit svazek postgresql pomocí Aws EBS v Kubernete

  2. Vrátit všechny skupiny souborů pro aktuální databázi na serveru SQL Server

  3. Přistupujte k DB5 k MySQL automaticky

  4. Doktrína - poddotaz v od