如何将SQL查询返回的多行结果合并为仅保留有效值的单行数据
查询结果多行合并为单行实现方案
SQL 实现(推荐直接在查询侧处理)
核心逻辑是通过聚合函数提取各列的有效非空/非零值,你可以把现有查询作为子查询,再执行以下聚合操作:
通用兼容写法(适配所有主流数据库 MySQL、PostgreSQL、Oracle 等)
SELECT MAX(CASE WHEN COIL_ID <> 0 THEN COIL_ID END) AS COIL_ID, MAX(CASE WHEN COIL IS NOT NULL THEN COIL END) AS COIL, MAX(CASE WHEN SHEET_ID <> 0 THEN SHEET_ID END) AS SHEET_ID, MAX(CASE WHEN SHEET IS NOT NULL THEN SHEET END) AS SHEET FROM ( -- 这里替换为你原本的查询语句 SELECT * FROM your_original_query ) AS temp_result
这个写法适配性最强,会主动过滤掉各列的0和NULL无效值,最终返回你需要的单行合并结果,不受有效值大小限制。
如果你的场景中有效值一定是同列中的最大值,也可以简化写法:
SELECT MAX(COIL_ID) AS COIL_ID, MAX(COIL) AS COIL, MAX(SHEET_ID) AS SHEET_ID, MAX(SHEET) AS SHEET FROM ( -- 这里替换为你原本的查询语句 SELECT * FROM your_original_query ) AS temp_result
Python 实现(如果需要在查询后用代码处理)
如果已经把查询结果读取为 pandas DataFrame,可以用以下代码实现合并:
import pandas as pd # df 为查询得到的原始DataFrame df = df.replace(0, pd.NA) merge_result = df.agg('max').to_frame().T
内容的提问来源于stack exchange,提问作者JMLRN
相关产品推荐
相关产品推荐

