基于键合并百万级多行数据集的SQL高效实现方案求助
按Pnr聚合非空字段的高效SQL实现方法
针对百万行级别的数据集,按Pnr键合并多行、聚合各字段非空值的需求,最直接且高效的方案是利用聚合函数结合GROUP BY实现,以下是具体实现:
测试表创建代码
declare @TmpTable table ( Pnr varchar(10), Status varchar(10), Komkod varchar(10), Fornvn varchar(10) ) insert into @TmpTable values ('01010101', '01', null, null ), ('01010101', null , '0430', null ), ('01010101', null , null, 'Test' ), ('02020202', '10', null, null ), ('02020202', null, '3004', null ), ('02020202', null , null, 'Test' )
核心实现代码
SELECT Pnr, MAX(Status) AS Status, MAX(Komkod) AS Komkod, MAX(Fornvn) AS Fornvn FROM @TmpTable GROUP BY Pnr
方案说明
- 聚合函数
MAX()(或MIN())会自动忽略NULL值,恰好匹配每个Pnr下各字段仅存在一个非空值的场景,能准确提取有效数据。 GROUP BY Pnr的执行逻辑简单高效,若Pnr字段存在索引,百万级数据的处理性能会大幅提升,是此类需求的最优选择。
内容的提问来源于stack exchange,提问作者Jens Borrisholt
相关产品推荐
相关产品推荐

