



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Oracle中分组后拼接分组字符串先分组,再把分组后的属于某组的多条记录的某字段进行拼接。实现方式如下:/*-创建表test*/createtabletest(NONUMBER,VALUEVARCHAR2(100),NAMEVARCHAR2(100);/*-插入数据*/insertintotestselect*from(select1,a,测试1fromdualunionallselect1,b,测试2fromdualunionallselect1,c,测试3fromdualunionallselect1,d,测试4fromdualunionallselect2,e,测试5fromdualunionallselect4,f,测试6fromdualunionallselect4,g,测试7fromdual);/*-Sql语句:*/selectNo,ltrim(max(sys_connect_by_path(Value,;),;)asValue,ltrim(max(sys_connect_by_path(Name,;),;)asNamefrom(selectNo,Value,Name,rnFirst,lead(rnFirst)over(partitionbyNoorderbyrnFirst)rnNextfrom(selecta.No,a.Value,a.Name,row_number()over(orderbya.No,a.Valuedesc)rnFirstfromTesta)tmpTable1)tmpTable2startwithrnNextisnullconnectbyrnNext=priorrnFirstgroupbyNo;/*-检索结果如下:*/*NOVALUENAME1a;b;c;d测试1;测试2;测试3;测试42e测试54f;g测试6;测试7*/*分析*/-简单解释一下那个Sql吧:/*-1、最内层的Sql(即表tmpTable1),按No和Value排序,并列出行号:*/selecta.No,a.Value,a.Name,row_number()over(orderbya.No,a.Valuedesc)rnFirstfromTesta;/*该语句结果如下:NOVALUENAMERNFIRST1d测试411c测试321b测试231a测试142e测试554g测试764f测试67*/*-2、外层的Sql(即表tmpTable2),根据No分区,取出当前行对应的下一条记录的行号字段:*/selectNo,Value,Name,rnFirst,lead(rnFirst)over(partitionbyNoorderbyrnFirst)rnNext/*-lead(rnFirst):取得下一行记录的rnFirst字段-over(partitionbyNoorderbyrnFirst)按rnFirst排序,并按No分区,-分区就是如果下一行的No字段与当前行的No字段不相等时,不取下一行记录显示*/from(selecta.No,a.Value,a.Name,row_number()over(orderbya.No,a.Valuedesc)rnFirstfromTesta)tmpTable1;/*-该语句结果如下:NOVALUENAMERNFIRSTRNNEXT1d测试4121c测试3231b测试2341a测试14NULL2e测试55NULL4g测试7674f测试67NULL*/*-3、最后就是最外层的sys_connect_by_path函数与start递归了*/sys_connect_by_path(Value,;)startwithrnNextisnullconnectbyrnNext=priorrnFirst/*-这个大概意思就是从rnNext为null的那条记录开始,递归查找,-如果前一记录的rnFirst字段等于当前记录的rnNext字段,就把2条记录的Value用分号连接起来,-大家可以先试试下面这个没有Max和Group的Sql:*/selectNo,sys_connect_by_path(Value,;)asValue,sys_connect_by_path(Name,;)asNamefrom(selectNo,Value,Name,rnFirst,lead(rnFirst)over(partitionbyNoorderbyrnFirst)rnNextfrom(selecta.No,a.Value,a.Name,row_number()over(orderbya.No,a.Valuedesc)rnFirstfromTesta)tmpTable1)tmpTable2startwithrnNextisnullconnectbyrnNext=priorrnFirst/*结果是:NOVALUENAME1;a;测试11;a;b;测试1;测试21;a;b;c;测试1;测试2;测试31;a;b;c;d;测试1;测试2;测试3;测试42;e;测试54;f;测试64;f;g;测试6;测试7*/*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 想象的力量课件
- 2026届江西省宜春市昌黎实验学校化学高二上期中学业质量监测模拟试题含解析
- 情景与影视剧冲突的课件
- 四川省乐山市高中2026届化学高二第一学期期中监测试题含解析
- 幼儿园班级庆元旦迎新年活动方案
- 社区最优的国庆节活动方案
- 高中毕业联欢会策划方案
- 停车场收费及管理方案
- 工会劳模活动方案
- 安检货车考试题及答案
- 《企业研发费用税前加计扣除政策解读与应用课件》
- 蓝桥杯-科学素养考试题库(含答案)
- OptiStruct结构分析与工程应用
- HRM4800原料立式磨使用手册
- 辽宁中考英语2022-2024真题汇编-教师版-专题05 阅读还原之五选四等
- 钢构彩瓦施工合同范本
- 广东省深圳市2024-2025学年高一上学期期中考试数学试卷(含答案)
- 第6讲立体几何(2022-2023年高考真题)(原卷版)
- 安宁疗护舒适照护
- 幕墙作业安全技术交底
- 中医耳针技术
评论
0/150
提交评论