如何动态分组拼接未知数量的字符串值?
分组拼接字符串解决方案
1. SQL 实现
根据使用的数据库类型,选择对应的聚合函数完成分组拼接:
MySQL
SELECT Num, Qty, GROUP_CONCAT(Value SEPARATOR ' ') AS Values FROM your_table GROUP BY Num, Qty;
PostgreSQL
SELECT Num, Qty, STRING_AGG(Value::TEXT, ' ') AS Values FROM your_table GROUP BY Num, Qty;
SQL Server
SELECT Num, Qty, STUFF( (SELECT ' ' + CAST(Value AS VARCHAR(5)) FROM your_table t2 WHERE t2.Num = t1.Num AND t2.Qty = t1.Qty FOR XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)'), 1, 2, '' ) AS Values FROM your_table t1 GROUP BY Num, Qty;
2. Python Pandas 实现
如果用Python处理数据集,可借助Pandas的分组聚合功能:
import pandas as pd # 构造数据集(实际场景可替换为读取文件/数据库) df = pd.DataFrame({ 'Num': [1,1,2,2,2,2,2,2,2,2,3,3,3], 'Qty': [2,2,8,8,8,8,8,8,8,8,3,3,3], 'Value': ['456','457','837','838','839','840','841','842','843','844','901','902','903'] }) # 按Num和Qty分组,拼接Value字段 result_df = df.groupby(['Num', 'Qty'])['Value'].agg(' '.join).reset_index() result_df.columns = ['Num', 'Qty', 'Values'] # 打印输出(或导出为所需格式) print(result_df.to_string(index=False))
运行后输出结果与期望格式一致。
内容的提问来源于stack exchange,提问作者Sparkle
相关产品推荐
相关产品推荐

