如何在SQL中合并同一客户的多行B1、C1列数据?
解决方案
方法1:Excel/Google Sheets(Power Query)
适合可视化批量处理,支持任意行数的合并需求:
- 选中目标数据区域,点击「数据」选项卡 → 「从表格/区域」(Excel)或「数据」→「导入数据」→「从表格」(Google Sheets),将数据导入Power Query编辑器。
- 选中
Name和DOB列,点击「转换」选项卡 → 「分组依据」。 - 分组规则设置:
- 分组依据:勾选
Name和DOB - 新增两个分组项:
- 列名设为
B1,操作选「自定义」,公式栏输入Text.Combine([B1], ", ") - 列名设为
C1,操作选「自定义」,公式栏输入Text.Combine([C1], ", ")
- 列名设为
- 分组依据:勾选
- 点击确定后,关闭编辑器并上载数据,即可得到合并结果。
如果是少量数据,也可以用函数公式:
假设数据在A1:D3区域,E2单元格输入(Excel 365/Google Sheets直接回车,旧版Excel按Ctrl+Shift+Enter):
=TEXTJOIN(", ", TRUE, IF((A$2:A$3=A2)*(B$2:B$3=B2), C$2:C$3, ""))
下拉填充后,再在F2单元格处理C1列:
=TEXTJOIN(", ", TRUE, IF((A$2:A$3=A2)*(B$2:B$3=B2), D$2:D$3, ""))
方法2:Python pandas代码
适合编程自动化处理,兼容单行、多行等所有场景:
import pandas as pd # 加载你的数据(实际使用时可替换为pd.read_excel/pd.read_csv读取文件) data = { 'Name': ['cust A', 'cust A'], 'DOB': ['01/06/99', '01/06/99'], 'B1': ['ba1', 'ba2'], 'C1': ['ca1', 'ca2'] } df = pd.DataFrame(data) # 按Name+DOB分组,合并对应列 merged_df = df.groupby(['Name', 'DOB']).agg( B1=('B1', ', '.join), C1=('C1', ', '.join) ).reset_index() print(merged_df)
运行输出结果:
Name DOB B1 C1 0 cust A 01/06/99 ba1, ba2 ca1, ca2
内容的提问来源于stack exchange,提问作者lwillson
相关产品推荐
相关产品推荐

