首页 > 编程知识 正文

sql group concat,sql语句行列转换

时间:2023-05-05 18:11:40 阅读:14044 作者:4938

1、先学习cancat ()函数吧。

cancat ()函数:用于连接两个或多个数组

案例:

源数据:

user order _ type order _ numberzhangsancollect 20 wangwu payment3zahngsanpayment5wangwu collect 15目标:

使用user order _ grosszhangsancollect (20 )、payment (5) wangwu collect (15 )、payment (3) concat ) )函数访问order_type和oor

首先,concat(order_type,',order_number,') '是两个字段的连接,连接结果如下:

userorderzhangsancollect(20 ) wangwupayment(3)3) zahngsanpayment(5)5) wangwu collect (15 )以及concat_ws )和congwu

select user,concat_ws (,collect_set ) concat ) ((,order_number,') ) orderfromttrom ) )。

其中,order别名的第一个逗号由逗号分隔!

collect_set角色:

(1)减肥,体重落在group by后面的用户身上

)2) group by以后属于同一user的形成一个集合,与concat_ws组合使用,分割形成字符串

=================================列转=======

对HIVE行进行排序的操作:

在hive中如何进行行转列? 使用: concat_ws(‘ (((“拆分时使用的字符”collect_set ) ) ) ) ) ) ) ) 652

test.txta b 1a b 2a b 3c d 4c d 5c d 6如何将上图转换为:

a1、2、3cd4、5、6句:

select col1、col2、concat_ws (、)、collect _ set (col3) ) from tablename group by col1、col2;

上述是一个行转列! 使用了名为concat_ws (的函数!

其中collect_set的作用:只接受基本数据类型,主要作用是重新聚合字段的值以生成阵列类型字段。

怎么把上面的东西复原呢? 它用于lateral viewexplode () HIVE中的列跳槽函数。

语句:

select col1、col2、col5fromtablenamelateralviewexplode (split (col 3,',') ) b as col5;

其中b是虚拟表的名称,此字段是必填字段!

其中,explode的作用是列转换。 此函数接收array类型的参数,其作用正好与collect_set相反,用于将array类型的数据行转换为列。

以上是concat concat_ws collect_set的有用性。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。