sql >> Databáze >  >> RDS >> Sqlserver

Jak získat hodnoty sloupců v jedné hodnotě oddělené čárkami

Označili jste otázku jak sql-server, tak plsql, takže poskytnu odpovědi pro SQL Server i Oracle.

V SQL Server můžete použít FOR XML PATH pro zřetězení více řádků dohromady:

select distinct t.[user],
  STUFF((SELECT distinct ', ' + t1.department
         from yourtable t1
         where t.[user] = t1.[user]
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,2,'') department
from yourtable t;

Viz SQL Fiddle s ukázkou .

V Oracle 11g+ můžete použít LISTAGG :

select "User",
  listagg(department, ',') within group (order by "User") as departments
from yourtable
group by "User"

Viz SQL Fiddle s ukázkou

Před Oracle 11g jste mohli použít wm_concat funkce:

select "User",
  wm_concat(department) departments
from yourtable
group by "User"


  1. Jak vložit více řádků do databáze mysql najednou s připravenými příkazy?

  2. Připojte tabulku s MAX hodnotou z jiné

  3. Připojení k Vertica v IRI Workbench

  4. Proč SQL server hází tuto chybu:Nelze vložit hodnotu NULL do sloupce 'id'?