hive列转行、行转列

1.列转行

select  t.cust_id
          ,concat_ws(‘,‘,collect_list(group_id)) one_pace
  from (select   ‘A_001‘ cust_id
                       ,‘20191014‘ group_id
           union all
           select   ‘A_001‘ cust_id
                      ,‘20191015‘ group_id
          union all
           select   ‘A_001‘ cust_id
                      ,‘20191016‘ group_id) t
 group by t.cust_id;

2.行转列

select  cust_id
          ,one_pace
          ,group_id
  from (select  ‘A_001‘ cust_id
                      ,‘20191014,20191015,20191016‘ one_pace
           union all
          select  ‘A_002‘ cust_id
                     ,‘20191014,20191015,20191016‘ one_pace
           union all
          select   ‘A_003‘ cust_id
                     ,‘20191014,20191015,20191016‘ one_pace) t
lateral view explode(split(one_pace,‘,‘)) num as group_id;

原文地址:https://www.cnblogs.com/Arabi/p/11678314.html

时间: 2024-07-28 16:47:07

hive列转行、行转列的相关文章

Hive之列转行,行转列

测试数据 hive> select * from col_lie limit 10; OK col_lie.user_id col_lie.order_id 104399 1715131 104399 2105395 104399 1758844 104399 981085 104399 2444143 104399 1458638 104399 968412 104400 1609001 104400 2986088 104400 1795054 把相同user_id的order_id按照逗号

Sqlserver 列转行 行转列

sqlserver的行转列 列转行问题 行转列:1 使用Case when 方式 CREATE TABLE [StudentScores]( [UserName] NVARCHAR(20), --学生姓名 [Subject] NVARCHAR(30), --科目 [Score] FLOAT, --成绩) INSERT INTO [StudentScores] SELECT 'Nick', '语文', 80 INSERT INTO [StudentScores] SELECT 'Nick', '数

内存数据库中列转行的应用,h2中列转行,hsqldb中列转行

其实列转行是比较简单的用sum和decode函数就可以了,但是我遇到的项目,不知道数据谁设计的居然字段里面还设计成long类型,此long类型与java中的不同,oracle中的long是指可变长二进制数据,最长2G,哎没办法只好转换了. 以下是hsqldb的转换,用到了转换函数convert,可以将long类型的转换为double类型,其中d.value是long类型,status是int类型,所以value需要转换 SELECT P.NAME,P.ID, SUM(DECODE(D.K_NAM

SQL Server 动态行转列(参数化表名、分组列、行转列字段、字段

一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 方法一:使用拼接SQL,静态列字段: 方法二:使用拼接SQL,动态列字段: 方法三:使用PIVOT关系运算符,静态列字段: 方法四:使用PIVOT关系运算符,动态列字段: 扩展阅读一:参数化表名.分组列.行转列字段.字段值: 扩展阅读二:在前面的基础上加入条件过滤: 参考文献(References) 二.背景(Contexts) 其实行转列并不是一个什么新鲜的

DB2行转列、列转行等操作

DB2 行转列 ----start 在网上看到这样一个问题:(问题地址:http://www.mydb2.cn/bbs/read.php?tid=1297&page=e&#a) [c-sharp] view plaincopyprint? 班级  科目   分数 1     语文   8800 1     数学   8420 1     英语   7812 …… 2     语文   8715 2     数学   8511 2     英语   8512 …… 要求转换成下面这样的结果

SQLServer处理行转列和列转行

掌握SQL Server 行转列和列转行 1.列转行 数据经过计算加工后会直接生成前端图表需要的数据源,但是程序里又需要把该数据经过列转行写入中间表中,下次再查询该数据时直接从中间表查询数据. 1.1 列换行语法 table_source UNPIVOT( value_column FOR pivot_column IN(<column_list>) ) 1.2  行转列案例 WITH T AS ( SELECT 1 as TeamId,'测试团队1' as Team,80 'MEN',20

T-Sql语法:行转列(pivot)和列转行(unpivot)

在不知道PIVOT关系运算符的用法之前,我们通过聚合函数配合CASE--WHEN的写法来实现相应的功能,微软在Sql Server 2005以及更高版本中提供能PIVOT关系运算符,POVIT提供的语法比一系列的SELECT--CASE语句中所指定的语法更简单和更具可读性. POVIT的完整语法: table_source PIVOT(聚合函数(<value_column>) FOR pivot_column IN(<pivot_column_list>))  as <piv

SQL 行转列 列转行 PIVOT UNPIVOT

1.基础表 2.行转列,注意ISNULL函数的使用,在总成绩的统计中,ISNULL(-,0) 有必要使用 3.列转行,对列语文.数学.英语.政治,进行列转行,转为了2列,score scname 这两列,是新列,可以取名为 score11 scname22,随意 4.测试脚本 SELECT * FROM dbo.SC --插入测试数据 INSERT dbo.SC SELECT NEWID(),'001','jack1','数学',88 UNION SELECT NEWID(),'002','ja

SqlServer PIVOT函数快速实现行转列,UNPIVOT实现列转行

来自于 https://www.cnblogs.com/OpenCoder/p/6668882.html 我们在写Sql语句的时候没经常会遇到将查询结果行转列,列转行的需求,拼接sql字符串,然后使用sp_executesql执行sql字符串是比较常规的一种做法.但是这样做实现起来非常复杂,而在SqlServer2005中我们有了PIVOT/UNPIVOT函数可以快速实现行转列和列转行的操作. PIVOT函数,行转列 PIVOT函数的格式如下 PIVOT(<聚合函数>([聚合列值]) FOR

Oracle 行转列小结

最近在工作中,对行转列进行了应用,在此做一个简单的小结. 转换过程如下:     1.创建表结构 CREATE TABLE RowToCol ( ID NUMBER(10) not null, USER_NAME VARCHAR2(20 CHAR), COURSE VARCHAR2(20 CHAR), SCORE VARCHAR2(20 CHAR) ) 2.插入测试数据(原始数据如图) 3.行转列实现效果 4.具体实现 主要原理是利用decode函数.聚集函数(sum/max/min/avg),