sql >> データベース >  >> RDS >> Sqlserver

列を複数の行にグループ化し、SQL Server の MySQL のように Group_concate する

    これを試してください:

    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でグループ化したい場合 (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--------------------------------セキュリティ サービス 32,1テクニカル サービス 31,2:32,7  

    こちらの SQLFiddle をご覧ください



    1. MySQLトランザクションをテストする方法は?

    2. シーケンスが壊れていない場合は、複数の行から合計時間間隔を取得します

    3. Postgresで文字列をどのように引用しますか

    4. PLS-00201識別子'PACKAGENAME.PROCEDURENAME'を宣言する必要があります