使用Power Query合并同结构表格并聚合重复行数据
合并两张产品表并整合部门标识
我有两张结构完全相同的产品存储表,每行记录一个产品及其适配的部门标识。但两张表中可能存在同一产品对应不同部门标识的情况,现需将两张表合并为一张,使重复出现的产品不显示为两行,而是合并行并整合两张表中的部门标识。
示例数据
表01
| Product | Department A | Department B |
|---|---|---|
| Item A | X | |
| Item B | X | |
| Item C | X |
表02
| Product | Department A | Department B |
|---|---|---|
| Item A | X | |
| Item C | X | |
| Item D | X |
合并后结果
| Product | Department A | Department B |
|---|---|---|
| Item A | X | X |
| Item B | X | |
| Item C | X | X |
| Item D | X |
解决方案
可以通过UNION ALL合并两张表的所有数据,再用GROUP BY按产品分组,结合**MAX()**函数保留每个部门的有效标识(只要任意一张表中该产品对应部门有X,就保留X,否则为空)。
假设两张表分别名为table_01和table_02,SQL语句如下:
SELECT Product, MAX(`Department A`) AS `Department A`, MAX(`Department B`) AS `Department B` FROM ( SELECT Product, `Department A`, `Department B` FROM table_01 UNION ALL SELECT Product, `Department A`, `Department B` FROM table_02 ) combined GROUP BY Product;
说明
- UNION ALL:保留两张表的所有记录(包括重复产品行),避免
UNION自动去重导致部门标识丢失。 - **MAX()**函数:非空的
X会被优先保留,若两张表中该部门都为空则返回空值。 - GROUP BY Product:将同一产品的多行记录合并为一行,实现部门标识的整合。
注:若数据库对含空格的列名有语法要求,需用反引号(MySQL)或方括号(SQL Server)包裹列名。
内容的提问来源于stack exchange,提问作者Willian Lopes
相关产品推荐
相关产品推荐

