sql >> Database >  >> RDS >> Sqlserver

Hoe kan ik een groep tekst samenvoegen en maken op de SQL-server?

Hier, probeer deze,

SELECT  a.dept_id, 
        NewTable.NameValues
FROM    (
          SELECT DISTINCT dept_ID
          FROM tableA
        ) a 
        LEFT JOIN
        (
          SELECT  dept_id,
                STUFF((
                  SELECT  ', ' + [Name] 
                  FROM    tableA
                  WHERE   ( dept_id = Results.dept_id )
                  FOR XML PATH('')), 1, 1, '') AS NameValues
          FROM    tableA Results
          GROUP BY dept_id
        ) NewTable
        on a.dept_id = NewTable.dept_id
GO

SQLFiddle-demo

HIER is een andere versie

SELECT  a.dept_id, 
        SUBSTRING(d.nameList,1, LEN(d.nameList) - 1) ConcatenateNames
FROM 
        (
            SELECT DISTINCT dept_id
            FROM   tableA
        ) a
        CROSS APPLY
        (
            SELECT name + ', ' 
            FROM tableA AS B 
            WHERE A.dept_id = B.dept_id 
            FOR XML PATH('')
        ) D (nameList)
GO

SQLFiddle-demo



  1. Kan kolom dbo of de door de gebruiker gedefinieerde functie of geaggregeerde dbo.Splitfn niet vinden, of de naam is dubbelzinnig

  2. MySQL dubbele type vergelijking mislukt

  3. Hoe ORD() werkt in MariaDB

  4. cx_Oracle maakt geen verbinding bij gebruik van SID in plaats van servicenaam op verbindingsreeks