这是俺小伙伴写的: select dtm,id_,num_,sum(num_) over(partition by dtm,id) as total_num from tableA lateral view explode(split(id , ’,’)) split_id as id_ lateral view explode(split(num , ’,’)) split_num as num_ 但是不知道两个lateral view explode连接的结果是否能一一对应,于是我修改了一下 总体思路是先拆id列,每个id都会对应上num数组,此时编号,标记此id是id数组的第几个,再拆num数组,再以id分组编号,标记此num是num数组的第几位,当第一个编号=第二个编号,说明数组位置相同一一对应,不知道是否正确,欢迎各位小伙伴批评指正~ 这是俺修改后的: select dim,id1 as id,num1 as num,sum(num) over(partition by id1) as total_num from( select dim,id1,rank1,num1,rank() over(partition by id1) as rank2 from( select dtm,id1,num,rank() over(order by (select 0)) as rank1 from tableA lateral view explode(split(id , ’,’)) split_id as id1 ) lateral view explode(split(num , ’,’)) split_num as num1 ) where rank1=rank2