hive中行转列,生成新的列方法
具体sql,根据日期自动转换
select
t.index as index,
concat_ws('', collect_set(t.1_month)) as month_1,
concat_ws('', collect_set(t.2_month)) as month_2,
concat_ws('', collect_set(t.3_month)) as month_3
from
(
select
index,
case when month = substr(add_months(trunc(current_date(),'MM'), -3),0,7) then ytd else '' end as 3_month,
case when month = substr(add_months(trunc(current_date(),'MM'), -2),0,7) then ytd else '' end as 2_month,
case when month = substr(add_months(trunc(current_date(),'MM'), -1),0,7) then ytd else '' end as 1_month
from
base
) t
group by t.index
效果
原始数据
转换后数据
参考链接
https://blog.csdn.net/weixin_37536446/article/details/81166972?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param