PostgreSQL合并重复行并填充空值问题求助
PostgreSQL 合并同组多行数据解决方法
你需要将同一Nik和GROUP下的多行数据合并,把A、B、C列的非空值整合到一行里。这种场景不用复杂的JOIN,用分组查询配合聚合函数就能轻松解决。
解决方案SQL代码
SELECT Nik, "GROUP", MAX(A) AS A, MAX(B) AS B, MAX(C) AS C FROM your_table_name -- 替换成你的实际表名 GROUP BY Nik, "GROUP";
代码说明
MAX()函数会自动忽略空值,只返回每组中对应列的非空值。比如对于Nik=201212003的组,A列有一个非空值M,其他行该列是空,MAX(A)就会取M;同理B列取P,C列没有非空值就保留空,刚好得到你想要的合并结果。
原数据表
| Nik | GROUP | A | B | C |
|---|---|---|---|---|
| 201212003 | ENG | M | ||
| 201212003 | ENG | P | ||
| 201301005 | ENG | P | ||
| 201301005 | ENG | S |
期望结果表
| Nik | GROUP | A | B | C |
|---|---|---|---|---|
| 201212003 | ENG | M | P | |
| 201301005 | ENG | P | S |
内容的提问来源于stack exchange,提问作者Obeng Imut
相关产品推荐
相关产品推荐

