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

Zřetězit a seskupit více řádků v Oracle

Zvažte použití funkce LISTAGG v případě, že jste na 11g:

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

sqlFiddle

aktualizace: V případě, že ne, zvažte použití analýzy:

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. Jak filtrovat řádky bez NULL ve sloupci

  2. Nakonfigurujte skupiny dostupnosti SQL Server Always ON mezi dvěma synchronními replikami. Část 2

  3. Jak získat nejnovější záznam v každé skupině pomocí GROUP BY?

  4. Jak používat sql*plus v příkazovém skriptu Windows k řízení toku?