sql >> Databáze >  >> RDS >> Sqlserver

Seskupte sloupce do více řádků a Group_concate jako MySQL na SQL Server

Zkuste toto:

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

Výsledek

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

Zobrazit tento SQLFiddle

Pokud chcete seskupit podle Name (Něco jako Group_Concate v MySQL) pro to v SQL Server neexistuje žádná metoda. Je za tím jen logika.
Tak zkuste toto:

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)

Výsledek tedy bude

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

Zobrazit tento SQLFiddle



  1. Jak mohu nastavit datum MySQL pomocí řetězce jako 2015-07-30 18:32:18

  2. Pro poskytovatele ADO.NET „MySql.Data.MySqlClient“ nebyl nalezen žádný poskytovatel Entity Framework

  3. Spouštěč MySQL nemůže aktualizovat tabulku – získává ERROR 1442

  4. Kolik seskupených indexů může být v jedné tabulce?