数据库中记录如果是 get_request_line_no(integer) wagon_no(varchar2) storage_no(varchar2)
1111 c1 12
1111 c1 13
1111 c2 18
怎么样能搞成两条记录变成
1111 c1 12,13
1111 c2 18
按照get_request_line_no, wagon_no 合并记录,合并的字段用,号隔开select get_request_line_no, SUBSTR(MAX(SYS_CONNECT_BY_PATH(storage_no, ',')), 2) as stgroup_no, wagon_no
FROM (select distinct l.get_request_line_no,l.wagon_no,storage_no,
l.get_request_line_no + row_number() over(order by l.get_request_line_no) rn,
row_number() over(partition by l.get_request_line_no order by l.get_request_line_no) rn1
from oil_train_to_deliver l
group by get_request_line_no,wagon_no,storage_no)
START WITH rn1 = 1
connect by rn - 1 = prior rn
group by get_request_line_no,wagon_no
小弟写出来的不对 求大侠帮忙
1111 c1 12
1111 c1 13
1111 c2 18
怎么样能搞成两条记录变成
1111 c1 12,13
1111 c2 18
按照get_request_line_no, wagon_no 合并记录,合并的字段用,号隔开select get_request_line_no, SUBSTR(MAX(SYS_CONNECT_BY_PATH(storage_no, ',')), 2) as stgroup_no, wagon_no
FROM (select distinct l.get_request_line_no,l.wagon_no,storage_no,
l.get_request_line_no + row_number() over(order by l.get_request_line_no) rn,
row_number() over(partition by l.get_request_line_no order by l.get_request_line_no) rn1
from oil_train_to_deliver l
group by get_request_line_no,wagon_no,storage_no)
START WITH rn1 = 1
connect by rn - 1 = prior rn
group by get_request_line_no,wagon_no
小弟写出来的不对 求大侠帮忙
解决方案 »
- wm_concat 操作数值超出系统的限制
- 基础查询。谢谢
- java.sql.SQLException: ORA-01017: invalid username/password; logon denied
- 在线求教一个oracle job问题!急!
- 运行SQLLDR工具是不是必须安装ORACLE?
- 将这句sqlserver语句转成oracle语句,谢谢
- PLSQL中的周号转换是不是真的这么麻烦?
- 怎样修改sql*plus的edit命令的文件目录路径呢?
- 怎样从 Oracle9i 的 iSQL*Plus 界面登陆?
- 如果我的数据表空间大小为4G,所有PK,index放在index表空间,大小该如何呢?怎样创建呢?
- 任务调用批量插入存储过程
- Oracle变量与字符串变量判断错误?
from you_tab
group by get_request_line_no, wagon_no9i可用自定义聚集函数
create table t2(col1 varchar2(10),col2 varchar2(10));
insert into t2 values('001','vl1');
insert into t2 values('001','vl2');
insert into t2 values('001','vl3');
insert into t2 values('002','vl1');
insert into t2 values('002','vl2'); SELECT COL1, LTRIM(MAX(SYS_CONNECT_BY_PATH(COL2, ',')), ',') COL2
FROM (SELECT COL1,
COL2,
MIN(COL2) OVER(PARTITION BY COL1) COL2_MIN,
(ROW_NUMBER() OVER(ORDER BY COL1, COL2)) +
(DENSE_RANK() OVER(ORDER BY COL1)) NUMID
FROM T2)
START WITH COL2 = COL2_MIN
CONNECT BY NUMID - 1 = PRIOR NUMID
GROUP BY COL1 /*
COL1 COL2
---------- ----------------------------------------
001 vl1,vl2,vl3
002 vl1,vl2
2 rows selected
*/