ID に基づいた値の連結
この質問は、ID ごとに複数の行と単一の「ラベル」列を含むテーブルを、 ID ごとに 1 行と連結された「ラベル」列を持つテーブル。各ラベルはカンマで区切る必要があります。
提供されたデータは次の観測値で構成されています:
Response_ID | Label |
---|---|
12147 | It was not clear |
12458 | Did not Undersstand |
12458 | Was not resolved |
12458 | Did not communicate |
12586 | Spoke too fast |
12587 | Too slow |
必要な出力は次のとおりです:
Response_ID | Label |
---|---|
12147 | It was not clear |
12458 | Did not Undersstand,Was not resolved,Did not communicate |
12586 | Spoke too fast |
12587 | Too Slow |
この変換を実現するには、次のコード スニペットを使用できます:
declare @T table(Response_ID int, Label varchar(50)) insert into @T values (12147, 'It was not clear'), (12458, 'Did not Undersstand'), (12458, 'Was not resolved'), (12458, 'Did not communicate'), (12586, 'Spoke too fast'), (12587, 'Too slow') select T1.Response_ID, stuff((select ','+T2.Label from @T as T2 where T1.Response_ID = T2.Response_ID for xml path(''), type).value('.', 'varchar(max)'), 1, 1, '') as Label from @T as T1 group by T1.Response_ID
「stuff」関数のサブクエリは次のコードを使用します。 ' ' 演算子と XML メソッドを使用して連結し、ラベルの組み合わせを処理します。 「type」パラメータの「value」関数は、XML 出力を varchar(max) タイプに変換して、連結結果が適切に表示されるようにします。
サブクエリに order by ステートメントがないと、連結された順序が正しく表示されないことに注意してください。文字列は保証できません。
以上がIDに基づいて複数のラベルを単一の行に連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。