1

1つの列を複数の行、1つのセルに表示する方法を探していました。内容はコンマで区切られます。

たとえば、次の代わりに:

ProjectID名数
-------------------------------------
   2テクニカルサービス31
   1セキュリティサービス32
   7テクニカルサービス32

クエリの結果を次のようにしたいと思います。

名前ラベル
---------------------------
テクニカルサービス31,2
テクニカルサービス32,7
セキュリティサービス32,1

また、クエリの結果を次のようにしたいと思います:( Group_ConcateMySQLのように)

名前ラベル
-------------------------------
セキュリティサービス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

結果

NAME LABEL
----------------------------
セキュリティサービス32,1
テクニカルサービス32,7
テクニカルサービス31,2

このSQLFiddleを参照してください

Name(MySQLのようなもので)グループ化する場合Group_Concate、SQLServerにはそのためのメソッドはありません。それはその背後にある単なる論理です。
だからこれを試してみてください:

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
--------------------------------
セキュリティサービス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 に答える