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

Łącz i grupuj wiele wierszy w Oracle

Rozważ użycie funkcji LISTAGG, jeśli korzystasz z 11g:

select grp, listagg(name,',') within group( order by name ) 
  from name_table group by grp

sqlFiddle

aktualizacja: Jeśli nie, rozważ skorzystanie z narzędzi analitycznych:

select grp,
    ltrim(max(sys_connect_by_path
       (name, ',' )), ',')
        scbp
  from (select name, grp,
            row_number() over
           (partition by grp
            order by name) rn
         from tab
          )
start with rn = 1
connect by prior rn = rn-1
and prior grp = grp
  group by grp
  order by grp

sqlFiddle




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego nie mogę używać zmiennych wiązania w instrukcjach DDL/SCL w dynamicznym SQL?

  2. alternatywa dla listygg w Oracle?

  3. Tworzenie profili w Oracle dla bezpieczeństwa użytkownika

  4. Uzyskaj nazwę miesiąca od daty w Oracle

  5. Zwróć krótką nazwę dnia z daty w Oracle