多行合并为一行的sql语句

多行合并为一行的sql语句

ID:8834254

大小:35.00 KB

页数:14页

时间:2018-04-09

多行合并为一行的sql语句_第1页
多行合并为一行的sql语句_第2页
多行合并为一行的sql语句_第3页
多行合并为一行的sql语句_第4页
多行合并为一行的sql语句_第5页
资源描述:

《多行合并为一行的sql语句》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、多行合并为一行的SQL语句目录²例一1²例二2²例三3²例四5²例五6例六如何将多行数据合并成一行多列7例七C#12²例一表数据:testno      q------------1    n11    n21    n31    n41    n53    t13    t23    t33    t43    t53    t62    m1语句:withtestas(SELECT1ASNo,'N1'ASqFROMDualUNIONALLSELECT1ASNo,'N2'ASqFROMDualUNIONALLSELECT1ASNo,'N3'AS

2、qFROMDualUNIONALLSELECT1ASNo,'N4'ASqFROMDualUNIONALLSELECT1ASNo,'N5'ASqFROMDualUNIONALLSELECT3ASNo,'T1'ASqFROMDualUNIONALLSELECT3ASNo,'T2'ASqFROMDualUNIONALLSELECT3ASNo,'T3'ASqFROMDualUNIONALLSELECT3ASNo,'T4'ASqFROMDualUNIONALLSELECT3ASNo,'T5'ASqFROMDualUNIONALLSELECT3ASNo,'T

3、6'ASqFROMDualUNIONALLSELECT2ASNo,'M1'ASqFROMDual)SELECTNo,Substr(Jg,2,Length(Jg))ASJg FROM(SELECTNo,MAX(Sys_Connect_By_Path(q,','))ASJg         FROM(SELECTNo,                      q,                      Row_Number()Over(PARTITIONBYNoORDERBYNo,q)Rn                 FROMTest)  

4、      STARTWITHRn=1       CONNECTBYRn-1=PRIORRn              ANDNo=No        GROUPBYNo)谭工前面那个示例"CONNECTBYRn-1=PRIORRnANDNo=No"也应改成"CONNECTBYNo

5、

6、'

7、'

8、

9、(Rn-1)=PRIOR(NO

10、

11、'

12、'

13、

14、Rn)"结果才对。另外这个SQL只适合在小数据集或索引结果中进行处理,不然要使用全表扫描效率不高。输出:1 ,N1,N2,N3,N4,N52 ,M13 ,T1,T2,T3,T4,T5,T6²例二另解:人员所属部

15、门:第一个部门为缺省部门SELECT人员编号,      MIN(姓名)AS姓名,      Substr(MAX(To_Char(Length(部门),'99999999')

16、

17、部门),11,2000)AS部门 FROM(SELECT人员编号,姓名,Sys_Connect_By_Path(部门,',')AS部门         FROM(SELECT姓名,                      部门,                      缺省,                      人员编号,                   

18、   Row_Number()Over(PARTITIONBY姓名ORDERBY人员编号,缺省DESC)Rn                 FROM(SELECTc.姓名,                              b.名称AS部门,                              a.缺省,                              c.编号AS人员编号,                              b.编码AS部门编码                         FROM部门人员a

19、,部门表b,人员表c                        WHEREa.部门id=b.Id                          ANDa.人员id=c.Id                       )t)        STARTWITHRn=1       CONNECTBY(人员编号

20、

21、(Rn-1))=PRIOR(人员编号

22、

23、Rn)) GROUPBY人员编号 ORDERBY部门CONNECTBY(人员编号

24、

25、(Rn-1))=PRIOR(人员编号

26、

27、Rn)这一句整很久才整出来,为了避免不等长的编号,下面的改进也许更合

28、适:CONNECTBY(人员编号

29、

30、'

31、'

32、

33、(Rn-1))=PRIOR(人员编号

34、

35、'

36、'

37、

38、Rn)这样就不会出现错乱了.²例三如何将

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。