平时很少用到map类型,这次用到了记录一下。
适用场景:行转列,且mid的key个数可能不一样的情况。
举个栗子:
1 select 2 mid, 3 tags['电影'] as movie, 4 tags['音乐'] as music 5 from( 6 select 7 mid, 8 str_to_map(concat_ws(',',collect_list(concat(key,":",value)))) as tags 9 from ( 10 select 11 mid, 12 key, 13 concat_ws('-',collect_list(value))as value 14 from( 15 select 1 as mid,'电影' as key,'惊悚' as value 16 union ALL 17 select 1 as mid,'音乐' as key,'摇滚' as value 18 union ALL 19 select 1 as mid,'电影' as key,'喜剧' as value 20 ) a 21 group by 22 mid,key 23 )t 24 group by 25 mid 26 ) tt
构造数据:
mid | key | value |
---|---|---|
1 | 电影 | 惊悚 |
1 | 音乐 | 摇滚 |
1 | 电影 | 喜剧 |
运行结果:
mid | movie | music |
---|---|---|
1 | 惊悚-喜剧 | 摇滚 |