基于 ID 连接值
在数据操作中,通常需要将多行数据组合成单个字符串。这可以通过串联来实现,其中字符串由较小的片段组装而成。
问题陈述:
您有一个名为“结果”的表,其中有两列:“ Response_ID”和“标签”。每个“Response_ID”对应多个“Label”值。您的目标是生成一个新表,其中每个“Response_ID”一行,所有“标签”值连接成一个字符串,并用逗号分隔。
解决方案:
要根据“Response_ID”连接值,您可以使用以下 SQL查询:
select T1.Response_ID, stuff((select ','+T2.Label from Results as T2 where T1.Response_ID = T2.Response_ID for xml path(''), type).value('.', 'varchar(max)'), 1, 1, '') as Label from Results as T1 group by T1.Response_ID
解释:
Stuff():此函数连接字符串。它采用以下参数:
示例:
考虑以下内容表:
Response_ID | Label |
---|---|
12147 | It was not clear |
12458 | Did not Understand |
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 Understand,Was not resolved,Did not communicate |
12586 | Spoke too fast |
12587 | Too slow |
注意:连接字符串的顺序可能并不总是可预测的。为了精确控制顺序,可以在子查询中使用“ORDER BY”语句。
以上是如何在 SQL 中将多行连接成单个字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!