一行轉多行效果 一

2021-06-18 05:58:07 字數 1436 閱讀 9475

一行轉多行效果顯示:

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...