行轉列實現:
表資訊:
場景一:使用concat_ws和collect_set函式
說明:collect_set函式可以返回乙個array型別。
concat_ws函式可以拼接陣列,如下:
場景二:有時候如果需要對指標字段求和,則上述sql改寫成如下:
場景三:使用str_to_map和explode函式以及lateral view
說明:str_to_map可以將字串轉換為map,如下:
explode是表生成函式(udtf),入參是乙個陣列或者是map,將其迭代,返回多行結果,如下:
lateral view可以將一列拆分成多行資料。
列轉行實現:
利用上面的sql,建立一張表:
create table test_colrow as
select dt_m, adt.data_type, adt.data from test_rowcol lateral view
explode(str_to_map(concat('vaild_num=',vaild_num,'&unvaild_num=',unvaild_num),'&','=')) adt as data_type, data;
場景一:
場景二:恢復到test_rowcol錶樣(費了九牛二虎之力,大神們有高招請多指教)
--建立一組臨時表
--利用split函式和row_number()over()且再次利用臨時表
hive中行轉列,列轉行的場景及實現
hive行轉列,列轉行的應用場景 1 需要取 訂單號 對應的所有商品 sku號 商品 sku號 放在一列,即從table1查詢出table2 2 當商品 sku號 均在一列的時候,需要查詢每個 sku號 對應的 訂單號 即從table2查詢出table1。3 場景 在hive表中,乙個使用者會有多個...
SQL Server 中行轉列 列轉行
行轉列 create database test on primary name test.mdf filename d project test.mdf size 10mb,filegrowth 15 log on name test.ndf filename d project test.ldf...
SQL中行轉列 列轉行
sql行轉列 列轉行 這個主題還是比較常見的,行轉列主要適用於對資料作聚合統計,如統計某類目的商品在某個時間區間的銷售情況。整理測試資料 create table wyc test id int 32 not null auto increment name varchar 80 default n...