行转列
比如表A有三个字段如下
ID, key, value
1, A, 1
1, B, 0.4
2, A, 0.3
需要将同一个ID的多条记录转为一列,显然需要通过聚合操作实现。
对于value是数值类型的,聚合函数可以选为sum
,对于字符串类型,需要使用聚合函数collect_list
。
select ID, sum(if(key='A', value, NULL)) as A_value, sum(if(key='B', value, NULL)) as B_value group by ID
字符串类型
select ID, concat_ws('', collect_list(if(key='A', value, NULL))) as A_value, concat_ws(collect_list(if(key='B', value, NULL))) as B_value group by ID
列转行
这个需要利用 UDTF 实现!