Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Групирайте колони в множество редове и Group_concate като MySQL в SQL Server

Опитайте това:

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

Резултат

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

Вижте този SQLFiddle

Ако искате да групирате по Name (Нещо като Group_Concate в MySQL) няма никакъв метод за него в SQL Server. Това е просто логика зад това.
Така че опитайте това:

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)

Така че резултатът ще бъде

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

Вижте този SQLFiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. За да намерите следващия работен ден

  2. Как мога да получа върнатата стойност от системното съобщение на Sql Server?

  3. Поправете „SQL Server блокира достъпа до STATEMENT „OpenRowset/OpenDatasource“ на компонент „Ad Hoc разпределени заявки“

  4. Какво е логически оператор И в SQL Server - SQL Server / TSQL урок, част 120

  5. Как мога да вмъкна самоличност ръчно?