1. 假设我们在hive中有两张表,其中一张表是存用户基本信息,另一张表是存用户的地址信息等,表数据假设如下: user_basic_info: id name 1 a 2 b 3 c 4 d user_address; name address a add1 a add2 b add3 c add4 d add5 我们可以看到同一个用户不止一个地址(这里是假设的),我们需要把数据变为如下格式: id name address 1 a add1,add2 2 b add3 3 c add4 4
对于mysql / hive 再进行统计的时候假设须要行变成列,能够使用函数 CASE 字段a WHEN 值b THEN c [WHEN d THEN e]* [ELSE f] END 当字段a=值b时,返回c(假设是字段的话则代表该字段的值,也能够是一个固定值 加单引號就能够):当a=d时,返回e.否则返回f. 如: 数据表结构:(举例说明.id有反复的) select id ,sum(CASE action when 'article' then count else 0 end) as
今天有个同事找我,他说他有个需求,需要进行行转列,但是又跟一般的行转列有些区别,具体需求如下所说,需要将表1的数据转换为表2的显示格式. 我想了一下,给出了一个解决方法,具体如下所示(先给出测试数据) INSERT INTO TEST SELECT 1, 1, '定型名称', '预定型' UNION ALL SELECT 1, 2, '进布方式', '调平' UNION ALL SELECT 1, 3,
使用PIVOT行转列 1.建表及插入数据 USE [AdventureDB] GO /****** Object: Table [dbo].[Score] Script Date: 11/25/2016 4:30:50 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ) ) NULL,[Score] FLOAT NULL) ON [PRIMARY] GO ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )