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

複数の行を1つの行にマージします

    こちらがA それを行う方法(2005年でも機能します):

    テーブル

    DECLARE @table TABLE
        (
          [Type_ID] INT,
          [Client_ID] VARCHAR(50),
          [PBX_Vendor] VARCHAR(50)
        )
    

    データ

    INSERT  INTO @table
            SELECT  127,
                    '090820006311404926326C',
                    'Aastra'
            UNION ALL
            SELECT  127,
                    '090820006311404926326C',
                    'Ericsson'
            UNION ALL
            SELECT  127,
                    '111012237401404926326C',
                    'Aastra'
            UNION ALL
            SELECT  127,
                    '120209287521404926326C',
                    'Aastra'
            UNION ALL
            SELECT  127,
                    '120209287521404926326C',
                    'Alcatel'
    

    クエリ

    SELECT  [Type_ID],
            [Client_ID],
            (
              SELECT    STUFF((
                                SELECT  ',' + [PBX_Vendor]
                                FROM    @table
                                WHERE   [Client_ID] = tbl.[Client_ID]
                                        AND [Type_ID] = tbl.[Type_ID]
                                GROUP BY [PBX_Vendor]
                                ORDER BY [PBX_Vendor]
                              FOR
                                XML PATH('')
                              ), 1, 1, '')
            ) PBX_Vendor
    FROM    @table tbl
    GROUP BY [Type_ID],
            [Client_ID]
    

    結果

    Type_ID     Client_ID               PBX_Vendor
    127         090820006311404926326C  Aastra,Ericsson
    127         111012237401404926326C  Aastra
    127         120209287521404926326C  Aastra,Alcatel
    


    1. JOINでSQLUPDATEステートメントを使用するための5つの手間のかからないヒント

    2. SQLキー

    3. PostgreSQL EXPLAIN –クエリコストはいくらですか?

    4. OracleにはSQLServerのテーブル変数に相当するものがありますか?