sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man får kolumnvärden i ett kommaseparerat värde

Du taggade frågan med både sql-server och plsql så jag kommer att ge svar för både SQL Server och Oracle.

I SQL Server kan du använda FOR XML PATH för att sammanfoga flera rader:

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-fiol med demo .

I Oracle 11g+ kan du använda LISTAGG :

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

Se SQL-fiol med demo

Före Oracle 11g kunde du använda wm_concat funktion:

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


  1. Hur man ansluter till en MySQL-datakälla i Visual Studio

  2. Rekursiv PL SQL Query Hjälp

  3. MySql-fel:#105 (kod 150). När jag skapar mitt databasschema får jag felkoden 150.

  4. Hur man kontrollerar Oracle-databasen för långvariga frågor