create table A_TEST1
(
  RN      INTEGER,
  PRODUCT VARCHAR2(45),
  STEPNO  VARCHAR2(10),
  EQPID   VARCHAR2(10),
  FLAG    CHAR(1)
)数据初始化如下:
RN PRODUCT STEPNO EQPID FLAG
1 Z002A 09200 NWOXE01 N
2 Z002A 09200 NWSTD06 N
1 Z002A 09200 NWSTD01 Y1. 使用SQL
select PRODUCT,STEPNO,flag,  max(ltrim(sys_connect_by_path(eqpid, ';'), ';')) eqpid  
   from a_test1                                                                                          
start with rn = 1                                                                             
 connect by prior rn = rn - 1 and prior STEPNO = STEPNO                                            
  group by PRODUCT,STEPNO,flag
  order by PRODUCT,STEPNO   结果为:
PRODUCT STEPNO FLAG EQPID
Z002A 09200 N NWSTD01;NWSTD06
Z002A 09200 Y NWSTD012.使用SQL
select PRODUCT,STEPNO,flag,  max(ltrim(sys_connect_by_path(eqpid, ';'), ';')) eqpid  
   from a_test1                                                                                          
start with rn = 1                                                                             
 connect by prior rn = rn - 1 and prior flag = flag                                            
  group by PRODUCT,STEPNO,flag
  order by PRODUCT,STEPNO 结果为:
PRODUCT STEPNO FLAG EQPID
Z002A 09200 N NWOXE01;NWSTD06
Z002A 09200 Y NWSTD01
第2段SQL才是想要的结果,但速度就变得超级慢,几分钟都不能出来结果;第1段SQL10多秒就能出来。
前提是表中的数据量有点多上面简单的数据测试不出来效果,有谁能指点一下不?