sql >> Database >  >> RDS >> Sqlserver

Groepeer kolommen in meerdere rijen en Group_concate zoals MySQL in SQL Server

Probeer dit:

SELECT  Name, 
CAST(count AS VARCHAR(10)) + ',' + CAST(ProjectID AS VARCHAR(10))
AS Label FROM table1

Resultaat

NAME                   LABEL
----------------------------
Security Services      32,1
Technical Services     32,7
Technical Services     31,2

Bekijk deze SQLFiddle

Als je wilt groeperen op Name (Zoiets als Group_Concate in MySQL) is er geen methode voor in SQL Server. Het is gewoon een logica erachter.
Dus probeer dit:

SELECT  * FROM    (
    SELECT  DISTINCT Name
    FROM    table1
    ) table2
CROSS APPLY
    (SELECT  CASE ROW_NUMBER() 
      OVER(ORDER BY ProjectId) 
      WHEN 1 THEN '' ELSE ': ' END + 
      (CAST(table3.count AS VARCHAR(10)) + ',' 
      + CAST(table3.ProjectID AS VARCHAR(10)) )
    FROM    table1 table3
    WHERE   table3.Name = table2.Name
    ORDER BY ProjectID
    FOR XML PATH ('')
    ) table3(Label)

Dus het resultaat zal zijn

NAME                  LABEL
--------------------------------
Security Services     32,1
Technical Services    31,2: 32,7

Bekijk deze SQLFiddle



  1. Java:resultatenset is leeg tijdens het aanroepen van de opgeslagen procedure met de ref-cursor als OUT

  2. Postgresql-socketfout op OSX 10.7.3 bij het uitvoeren van Django's syncdb

  3. Een uitsluitingsbeperking maken met een datumbereik met behulp van sqlalchemy

  4. Sleutel, waarde extraheren uit json-objecten in Postgres