根據ID 連接值
此問題旨在將每個ID 具有多行和單個「標籤」列的表轉換為每個ID 一行和一個串聯的「標籤」欄位的表。每個標籤應以逗號分隔。
提供的資料由以下觀察組成:
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中文網其他相關文章!