您好,欢迎访问一九零五行业门户网

Oracle 一行转多行

/**解决方法的核心是:产生出1-10的一个列,作为“辅助列”**/ select level l from dual connect by levellt;=10; 【问题】
/**创建测试的表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
/**最终的sql**/
select t1.id, 'a1-'||t3.dz as list
  from t1, t2, (select level dz from dual connect by level
 where t1.pid = t2.pid
   and t3.dz
 order by 1,2;

其它类似信息

推荐信息