首页 > 解决方案 > Hive SQL,如何在group_concat中有多个列?

问题描述

我的数据如下所示:

Customer       DUNS         Employees
   A            1              60
   A            2             100
   A            3              15
   A            4              40

我想要的是这个:

Customer        NEW CONCAT FIELD
   A            1:60, 2:100, 3:15, 4:40

这是我到目前为止所拥有的:

Select 
 Customer
,group_concat(cast(DUNS as string)) as DUNS
,group_concat(cast(Employees as string)) as 'Emps'
From MyTable
group by Customer

结果如下:

Customer        DUNS           EMPS
   A            1, 2, 3, 4     60,100,15,40

我真的很难将这些结合到一个领域中。我发现 MySQL 语法看起来像我需要的,但它在我的 cloudera/Impala 编辑器中不起作用。

对于我的一生,我找不到以前做过的地方,但我确信它在某个地方。如何编辑此查询以获取“新 CONCAT FIELD”?

标签: hivehqlimpalagroup-concat

解决方案


首先concat是第二个和第三个字段并collect_list在新字段上使用

select Customer,collect_list(duns_employees) as duns_employees_list from
(
    select Customer,CONCAT(DUNS,':',Employees) as duns_employees from table
) a
group by Customer; 

推荐阅读