hive實現多行轉成1行

2021-07-10 17:26:53 字數 725 閱讀 8288

--場景描述:將查詢結果記錄每行內容的列先按逗號(,)分割,然後再將多行內容用&符號存為一行內容

例如:idname age

8liu 19

9zhang 20

10li 25

要求轉化為:

8,liu,19&9,zhang,20&10,li,25

--實現指令碼

select concat_ws('&', collect_set(concat(line))) as line

from (select concat_ws(',', id, name, age) as line --注意替換對應的採集字段

from (select id, name, age --注意替換對應的採集字段

row_number() over(partition by rk order by id) rn --注意替換排序字段

from (

--業務資料採集指令碼替換位置

--begin--

select '1' rk, --固定寫法:借用字段,拿來分組使用

id,name,

--特別注意:若該字段可能為空,必須做類似如下的空值處理,否則資料將有缺失

nvl(age, '')

from test_tbl

--end--

) t1) t2

where t2.rn > 5000 --以防資料顯示不全,適當的分段提取

) t3;

sql 多行轉成一行

例如表a id data 1 a 1 b 1 c 2 d 2 f 轉換成表b 1 a b c 2 d e smerg是自定義函式 建立乙個函式smerg create function smerg id int returns varchar 8000 asbegin declare str var...

把多行轉成一行 用空格分開

select t1.id as 銷售合同標識,t1.billno as 單據號,t1.orderno as 合同編號,select distinct salesorderno from salescompactorder where parentid t1.id for xml path 銷售訂單號...

hive使用技巧(五) 一行轉多行,多行轉一行

hive使用技巧 一 自動化動態分配表分割槽及修改hive表字段名稱 hive使用技巧 二 共享中間結果集 hive使用技巧 三 巧用group by實現去重統計 hive使用技巧 四 巧用mapjoin解決資料傾斜問題 hive使用技巧 五 一行轉多行,多行轉一行 在資料處理過程中,經常需要使用一...