多行合并为一行SQL语句.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
多行合并为一行的SQL语句目录例一1例二2例三3例四5例五6例六 如何将多行数据合并成一行多列7例七 C#12例一表数据:testno?????? q------------1? ? ? ? n11? ? ? ? n21? ? ? ? n31? ? ? ? n41? ? ? ? n53? ? ? ? t13? ? ? ? t23? ? ? ? t33? ? ? ? t43? ? ? ? t53? ? ? ? t62? ? ? ? m1语句:with test as ( SELECT 1 AS No, N1 AS q FROM Dual UNION ALLSELECT 1 AS No, N2 AS q FROM Dual UNION ALLSELECT 1 AS No, N3 AS q FROM Dual UNION ALLSELECT 1 AS No, N4 AS q FROM Dual UNION ALLSELECT 1 AS No, N5 AS q FROM Dual UNION ALLSELECT 3 AS No, T1 AS q FROM Dual UNION ALLSELECT 3 AS No, T2 AS q FROM Dual UNION ALLSELECT 3 AS No, T3 AS q FROM Dual UNION ALLSELECT 3 AS No, T4 AS q FROM Dual UNION ALLSELECT 3 AS No, T5 AS q FROM Dual UNION ALLSELECT 3 AS No, T6 AS q FROM Dual UNION ALLSELECT 2 AS No, M1 AS q FROM Dual) SELECT No, Substr(Jg, 2, Length(Jg)) AS Jg FROM (SELECT No, MAX(Sys_Connect_By_Path(q, ,)) AS Jg FROM (SELECT No, q, Row_Number() Over(PARTITION BY No ORDER BY No, q) Rn FROM Test) START WITH Rn = 1 CONNECT BY Rn - 1 = PRIOR Rn AND No = No GROUP BY No)谭工前面那个示例CONNECT BY Rn - 1 = PRIOR Rn AND No = No也应改成CONNECT BY No|||||(Rn - 1) = PRIOR (NO|||||Rn)结果才对。另外这个SQL只适合在小数据集或索引结果中进行处理,不然要使用全表扫描效率不高。输出:1?,N1,N2,N3,N4,N52?,M13?,T1,T2,T3,T4,T5,T6例二另解:人员所属部门:第一个部门为缺省部门SELECT 人员编号, MIN(姓名) AS 姓名, Substr(MAX(To_Char(Length(部门), || 部门), 11, 2000) AS 部门 FROM (SELECT 人员编号, 姓名, Sys_Connect_By_Path(部门, ,) AS 部门 FROM (SELECT 姓名, 部门, 缺省, 人员编号, Row_Number() Over(PARTITION BY 姓名 ORDER BY 人员编号, 缺省 DESC) Rn FROM (SELECT c.姓名, b.名称 AS 部门, a.缺省, c.编号 AS 人员编号, b.编码 AS 部门编码 FROM 部门人员 a, 部门表 b, 人员表 c WHERE a.部门id = b.Id AND a.人员id = c.Id ) t) START WITH Rn = 1 CONNECT BY (人员编号 || (Rn - 1)) = PRIOR (人员编号 || Rn))?GROUP BY 人员编号?ORDER BY 部门CONNECT BY (人员编号 || (Rn - 1)) = PRIOR (人员编号 || Rn)这一句整很久才整出来,为了避免不等长的编号,下面的改进也许更合适:CONNECT BY (人员编号 || | || (Rn - 1)) = PRIOR (人员编号 || | || Rn)这样就不会出现错乱了.例三如何将一个表中的多行数据合并为一行新数据?比如有表A ID Field1 ? Field2 ? Field3 1 ? ? ? ? b ? ? ? ? ? ? ? 10.1 ? ? ? 12.2 2 ? ? ? ? b ? ? ? ? ? ? ? ? 9.8 ? ? ? ? 8.6 3 ? ? ? ? c ? ? ? ? ? ? ? 1

文档评论(0)

shaoye348 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档