Verketten von Werten basierend auf der ID
Diese Frage zielt darauf ab, eine Tabelle mit mehreren Zeilen pro ID und einer einzelnen „Label“-Spalte in eine umzuwandeln Tabelle mit einer Zeile pro ID und einer verketteten „Label“-Spalte. Jede Bezeichnung sollte durch Kommas getrennt werden.
Die bereitgestellten Daten bestehen aus den folgenden Beobachtungen:
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 |
Die gewünschte Ausgabe ist:
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 |
Um diese Transformation zu erreichen , kann das folgende Code-Snippet verwendet werden:
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
Die Unterabfrage in der Funktion „stuff“ verwendet die Verkettung über ' '-Operator und XML-Methoden zur Verarbeitung der Kombination von Beschriftungen. Die Funktion „value“ des Parameters „type“ konvertiert die XML-Ausgabe in einen varchar(max)-Typ, um eine ordnungsgemäße Anzeige der verketteten Ergebnisse sicherzustellen.
Bitte beachten Sie, dass ohne eine „order by“-Anweisung in der Unterabfrage die Reihenfolge der verketteten Saiten können nicht garantiert werden.
Das obige ist der detaillierte Inhalt vonWie verkette ich mehrere Beschriftungen basierend auf der ID zu einer einzigen Zeile?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!