hive技巧之—行转列的另一种实现方法

       前两天有个行转列的需求困扰了同事,我看了之后想出如下自认为较为简单的实现方法,和大家分享一下~

数据格式如下:

现在的目标是像转为一行,即:

productid  服务   位置  设施  卫生
344920      **    **    **    **

 现在想到的方式case when 结合concat_ws与collect_set实现,代码如下:

select productid
      ,concat_ws('',collect_set(fuwu))     `服务`
      ,concat_ws('',collect_set(weizhi))   `位置`
      ,concat_ws('',collect_set(sheshi))   `设施`
      ,concat_ws('',collect_set(weisheng)) `卫生`
from
  (  select productid
           ,case when tagtype='位置' then highlight else '' end as  weizhi
           ,case when tagtype='服务' then highlight else '' end as  fuwu 
           ,case when tagtype='卫生' then highlight else '' end as  weisheng
           ,case when tagtype='设施' then highlight else '' end as  sheshi
      from dw_htl.tmp_dianpingt
   ) a 
 group by productid

效果如下:

猜你喜欢

转载自blog.csdn.net/weixin_37536446/article/details/81166972