ORACLE 一行轉多行

2021-08-27 01:24:37 字數 1263 閱讀 9334

/**解決方法的核心是:產生出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的數量生成這樣的資料

id list

a1 a1-1

a1 a1-2

a2 a1-1

a2 a1-2

a2 a1-3

a3 a1-1

a3 a1-2

a3 a1-3

a3 a1-4

a3 a1-5

/**建立測試的表t1 也就是樓主說的a表**/

create table t1(

id varchar2(10),

pid varchar2(10)

);/**建立測試的表t2 也就是樓主說的b表**/

create table t2(

pid varchar2(10),

pnumber varchar2(10)

);/**插入t1的資料,插入t2的測試資料**/

insert into t1 values('a1','1');

insert into t1 values('a2','2');

insert into t1 values('a3','3');

insert into t2 values('1','2');

insert into t2 values('2','3');

insert into t2 values('3','5');

/**解決方法的核心是:產生出1-10的乙個列,作為「輔助列」**/

select level l from dual connect by level<=10;

/**最終的sql**/

select t1.id, 'a1-'||t3.dz as list

from t1, t2, (select level dz from dual connect by level <= 10) t3

where t1.pid = t2.pid

and t3.dz <= t2.pnumber

order by 1,2;

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

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

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

一行轉多行效果 一

一行轉多行效果顯示 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...