1

我一直在寻找一种在多行、一个单元格中显示一列的方法。它的内容用逗号分隔。

例如,而不是:

ProjectID 名称计数
-------------------------------------
   2 技术服务 31
   1 安全服务 32
   7 技术服务 32

我希望我的查询结果如下所示:

名称标签
--------------------------
技术服务 31,2
技术服务 32,7
安全服务 32,1

我还希望我的查询结果看起来像这样:(就像Group_Concate在 MySQL 中一样)

名称标签
-------------------------------------------
安全服务 32,1
技术服务 31,2: 32,7
4

2 回答 2

1

尝试这个:

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

结果

名称标签
----------------------------
安全服务 32,1
技术服务 32,7
技术服务 31,2

看到这个 SQLFiddle

如果你想按Name(类似于Group_ConcateMySQL 的东西)进行分组,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)

所以结果将是

名称标签
--------------------------------
安全服务 32,1
技术服务 31,2: 32,7

看到这个 SQLFiddle

于 2012-08-11T07:19:23.293 回答
0
select  Name, 
        cast(count as varchar(5))+','+cast(ProjectID as varchar(5)) as label
from <table>
于 2012-08-11T07:16:02.377 回答