sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan får du kolonneværdier i én kommasepareret værdi

Du taggede spørgsmålet med både sql-server og plsql, så jeg vil give svar til både SQL Server og Oracle.

I SQL Server kan du bruge FOR XML PATH for at sammenkæde flere rækker sammen:

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;

Se SQL Fiddle with Demo .

I Oracle 11g+ kan du bruge LISTAGG :

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

Se SQL Fiddle with Demo

Før Oracle 11g kunne du bruge wm_concat funktion:

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


  1. Node JS MySQL-forespørgselsfunktion returnerer ikke resultat

  2. Brug af vælg i lokal variabel og forberedt erklæring i mysql

  3. Mysql Slave opdaterer ikke

  4. mysql respekterer ikke wait_timeout-indstillingen i my.cnf