sql >> Database >  >> RDS >> Sqlserver

Hoe kolomwaarden in één door komma's gescheiden waarde te krijgen

Je hebt de vraag getagd met zowel sql-server als plsql, dus ik zal antwoorden geven voor zowel SQL Server als Oracle.

In SQL Server kunt u FOR XML PATH . gebruiken om meerdere rijen samen te voegen:

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;

Zie SQL Fiddle met demo .

In Oracle 11g+ kunt u LISTAGG . gebruiken :

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

Zie SQL Fiddle met demo

Vóór Oracle 11g kon u de wm_concat . gebruiken functie:

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


  1. Waarom mislukt de query niet met een niet-bestaande kolom in de subquery?

  2. Hoe DataContext.ExecuteCommand te gebruiken en de uitgevoerde opgeslagen proc-retourwaarde te krijgen?

  3. Mysql:Update veld van de meest recente record

  4. groeperen op maandnaam in sql