hive列转行,指定字段顺序,实现转置

建测试表

create table test_k_v 
(k string ,
 v double) 
row format delimited fields terminated by ',';

插入测试数据

insert overwrite table test_k_v 
select 'day',1.3 
union all 
select 'week',3.8 
union  all 
select 'month',4.2;

测试表为

hive列转行,指定字段顺序,实现转置_第1张图片

通过生成map,可以指定转置后的字段。执行语句为

select 
k_v['day'] as day,
k_v['week'] as week,
k_v['month'] as month
from 
(select str_to_map(concat_ws(',',collect_list(concat(k,':',v)))) k_v 
   from test_k_v) t ;

执行结果为,第一行为列名:

hive列转行,指定字段顺序,实现转置_第2张图片

你可能感兴趣的:(SQL)