一行轉多行效果顯示:
sql> with test as ( select 'a',4,10 from dual union select 'b',2,8 from dual) select * from test;
'a' 4 10
--- ---------- ----------
a 4 10
b 2 8
需求:
現有資料表中的資料形式為:
名稱 數量 單價
a 4 10
b 2 8
現在能否通過乙個sql語句將其變成(根據數量確定顯示的記錄條數):
名稱 數量 單價
a 1 10
a 1 10
a 1 10
a 1 10
b 1 8
b 1 8
結果:
sql> with test as
2 ( select 'a' name ,4 num ,10 price from dual
3 union
4 select 'b',2,8 from dual)
5 select name,1 num,price ,rn from test ,(select rownum rn from dual connect by level<=9)
6 where rn between 1 and num order by name
7 ;
name num price rn
---- ---------- ---------- ----------
a 1 10 1
a 1 10 2
a 1 10 3
a 1 10 4
b 1 8 2
b 1 8 1
6 rows selected
ORACLE 一行轉多行
解決方法的核心是 產生出1 10的乙個列,作為 輔助列 select level l from dual connect by level 10 問題 兩個表 a b a 表 id pid a1 1 a2 2 a3 3 b 表 pid pnumber 1 22 3 3 5要根據pnumber的數量生...
hive使用技巧(五) 一行轉多行,多行轉一行
hive使用技巧 一 自動化動態分配表分割槽及修改hive表字段名稱 hive使用技巧 二 共享中間結果集 hive使用技巧 三 巧用group by實現去重統計 hive使用技巧 四 巧用mapjoin解決資料傾斜問題 hive使用技巧 五 一行轉多行,多行轉一行 在資料處理過程中,經常需要使用一...
Oracle 正則 一行轉多行
select regexp substr bjdm 1,level,i as str,bjdm from valueweekinfo connect bylevel length bjdm length regexp replace bjdm,1 可以將 bjdm 換成 01,02,03,04 va...