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

Gruppér kolonner i flere rækker og Group_concate som MySQL i SQL Server

Prøv dette:

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

Resultat

NAVN LABEL-----------------------------Sikkerhedstjenester 32,1Tekniske tjenester 32,7Tekniske tjenester 31,2

Se denne SQLFiddle

Hvis du vil gruppere efter Name (Noget som Group_Concate i MySQL) er der ingen metode til det i SQL Server. Det er bare en logik bag det.
Så prøv dette:

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)

Så resultatet bliver

NAME LABEL--------------------------------Sikkerhedstjenester 32,1Tekniske tjenester 31,2:32,7 

Se denne SQLFiddle



  1. SQL Server-tilladelser på lagrede processer med dynamisk SQL

  2. Windows PSQL-kommandolinje:er der en måde at tillade login uden adgangskode?

  3. Læserløsninger til Special Islands-udfordringen

  4. Windows Batch Script til at sikkerhedskopiere lokale MySQL-databaser og kun beholde N seneste MAPPER med backup-filer