关于分组后字段拼接的问题
2015-01-07 18:02
155 查看
关于分组后字段拼接的问题
再再研究最近在论坛上,经常会看到关于分组后字段拼接的问题,大概是类似下列的情形:
SQL> select no,q from test 2 / NO Q ---------- ------------------------------ 001 n1 001 n2 001 n3 001 n4 001 n5 002 m1 003 t1 003 t2 003 t3 003 t4 003 t5 003 t6 12 rows selected |
001 n1;n2;n3;n4;n5 002 m1 003 t1;t2;t3;t4;t5;t6 |
前几天有人提到过sys_connect_by_path的用法,我想这里是不是也能用到这个方法,如果能做到的话,不用函数或存贮过程也可以做到了;要用到sys_connect_by_path,首先要自己构建树型的结构,并且树的每个分支都是单根的,例如1-〉2-〉3-〉4,不会存在1-〉2,1-〉3的情况;
我是这么构建树,很简单的,看下面的结果就会知道了:
SQL> select no,q,rn,lead(rn) over(partition by no order by rn) rn1 2 from (select no,q,row_number() over(order by no,q desc) rn from test) 3 / NO Q RN RN1 ---------- ------------------------------ ---------- ---------- 001 n5 1 2 001 n4 2 3 001 n3 3 4 001 n2 4 5 001 n1 5 002 m1 6 003 t6 7 8 003 t5 8 9 003 t4 9 10 003 t3 10 11 003 t2 11 12 003 t1 12 12 rows selected |
select no,sys_connect_by_path(q,';') result from (select no,q,rn,lead(rn) over(partition by no order by rn) rn1 from (select no,q,row_number() over(order by no,q desc) rn from test) ) start with no = '001' and rn1 is null connect by rn1 = prior rn SQL> 6 / NO RESULT ---------- -------------------------------------------------------------------------------- 001 ;n1 001 ;n1;n2 001 ;n1;n2;n3 001 ;n1;n2;n3;n4 001 ;n1;n2;n3;n4;n5 |
select no,max(sys_connect_by_path(q,';')) result from (select no,q, (row_number() over(order by no,q desc) + dense_rank() over(order by no)) rn, max(q) over(partition by no) qs from test ) start with q = qs connect by rn-1 = prior rn group by no SQL> 11 / NO RESULT ---------- -------------------------------------------------------------------------------- 001 ;n1;n2;n3;n4;n5 002 ;m1 003 ;t1;t2;t3;t4;t5;t6 |
相关文章推荐
- 关于Oracle分组后字段拼接的问题
- Oracle:关于分组后字段拼接的问题
- 关于分组后字段拼接的问题
- 关于分组后字段拼接的问题[行列转换]
- 关于分组后字段拼接的问题 (Oracle)
- Oracle:关于分组后字段拼接的问题
- 关于Oracle分组后字段拼接的问题
- 关于分组后字段拼接的问题 (Oracle)
- 关于Hibernate、NHibernate的 HQL 连接字段,字段拼接查询问题
- 关于表中某个字段的数据不能更新的问题
- 关于在数据库字段中添加换行符的问题
- 关于SQL的char,varchar字段在导出时切断中文字符显示问号或乱码的问题[原创]
- 关于字段长度的设计的几个问题!
- 关于LINQ字段不同类型做映射问题!
- 分组后数量问题,分组后得到每组前几行row_number() over (partition by 字段)
- 关于学习MSDN中"创建自定义字段类型和字段控件"的一些心得跟问题。
- 关于SqlServer2000 Image字段存储时应注意的问题
- 关于DataGrid数据绑定后对字段进行替换的问题与办法
- 转群友一个关于显示了分组方式下问题!!!!
- Oracle关于根据某列分组的问题