Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wyświetlanie wartości LITAGG w komórce na podstawie wartości innej kolumny

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 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-04061:istniejący stan treści pakietu PACKAGE.NAME został unieważniony utrzymuje się

  2. DBMS_APPLICATION_INFO.SET_CLIENT_INFO nie działa

  3. W źródle SSIS OLE DB brakuje losowo wierszy ze źródła danych Oracle

  4. Jak mogę policzyć liczbę słów w ciągu w Oracle?

  5. Niestandardowa funkcja Oracle IsNumber z precyzją i skalą