PostgreSQL中合并相同equipment_number的多行数据为单行
PostgreSQL 按equipment_number合并多行数据为单行
需要将PostgreSQL表中具有相同equipment_number的多行数据合并为单行,以减少数据行数。
原始表结构及数据
| equipment_number | etd | eta | atd | ata |
|---|---|---|---|---|
| MAHE8346461 | 2023-02-03 10:02:00 | 2023-01-03 10:02:00 | null | null |
| MAHE8346461 | null | null | 2022-02-03 10:02:00 | null |
| MAHE8346462 | null | 2022-02-04 13:02:00 | null | 2022-02-04 13:02:00 |
| MAHE8346462 | 2022-02-04 13:02:00 | 2022-02-04 13:02:00 | 2022-02-03 10:02:00 | null |
| MAHE8346462 | null | 2022-02-04 13:02:00 | null | null |
期望结果
| equipment_number | etd | eta | atd | ata |
|---|---|---|---|---|
| MAHE8346461 | 2023-02-03 10:02:00 | 2023-01-03 10:02:00 | 2022-02-03 10:02:00 | null |
| MAHE8346462 | 2022-02-04 13:02:00 | 2023-01-03 10:02:00 | 2022-02-03 10:02:00 | 2022-02-04 13:02:00 |
解决方案
使用PostgreSQL的聚合函数MAX()配合分组查询即可实现,MAX()会自动忽略null值,若同一字段存在多个非null值,会取其中最大的数值(日期类型则取最晚日期),正好匹配需求。
执行以下SQL语句(将your_table_name替换为你的实际表名):
SELECT equipment_number, MAX(etd) AS etd, MAX(eta) AS eta, MAX(atd) AS atd, MAX(ata) AS ata FROM your_table_name GROUP BY equipment_number;
内容的提问来源于stack exchange,提问作者ladsaylee
相关产品推荐
相关产品推荐

