多行合并为1行的SQL语句.docx

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
多行合并为1行的SQL语句

多行合并为一行的SQL语句 目录  TOC \o 1-3 \h \z \u  HYPERLINK \l _Toc184622384 ? 例一  PAGEREF _Toc184622384 \h 1  HYPERLINK \l _Toc184622385 ? 例二  PAGEREF _Toc184622385 \h 2  HYPERLINK \l _Toc184622386 ? 例三  PAGEREF _Toc184622386 \h 3  HYPERLINK \l _Toc184622387 ? 例四  PAGEREF _Toc184622387 \h 5  HYPERLINK \l _Toc184622388 ? 例五  PAGEREF _Toc184622388 \h 6  HYPERLINK \l _Toc184622389 例六 如何将多行数据合并成一行多列  PAGEREF _Toc184622389 \h 7  HYPERLINK \l _Toc184622390 例七 C#  PAGEREF _Toc184622390 \h 12  例一 表数据:test no?????? q 1? ? ? ? n1 1? ? ? ? n2 1? ? ? ? n3 1? ? ? ? n4 1? ? ? ? n5 3? ? ? ? t1 3? ? ? ? t2 3? ? ? ? t3 3? ? ? ? t4 3? ? ? ? t5 3? ? ? ? t6 2? ? ? ? m1 语句: with test as ( SELECT 1 AS No, N1 AS q FROM Dual UNION ALL SELECT 1 AS No, N2 AS q FROM Dual UNION ALL SELECT 1 AS No, N3 AS q FROM Dual UNION ALL SELECT 1 AS No, N4 AS q FROM Dual UNION ALL SELECT 1 AS No, N5 AS q FROM Dual UNION ALL SELECT 3 AS No, T1 AS q FROM Dual UNION ALL SELECT 3 AS No, T2 AS q FROM Dual UNION ALL SELECT 3 AS No, T3 AS q FROM Dual UNION ALL SELECT 3 AS No, T4 AS q FROM Dual UNION ALL SELECT 3 AS No, T5 AS q FROM Dual UNION ALL SELECT 3 AS No, T6 AS q FROM Dual UNION ALL SELECT 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,N5 2?,M1 3?,T1,T2,T3,T4,T5,T6 例二 另解: 人员所属部门:第一个部门为缺省部门 SELECT 人员编号, ?????? MIN(姓名) AS 姓名, ?????? Substr(MAX(To_Char(Length(部门), || 部门), 11, 2000) AS 部门 ? FROM (SELECT 人员编号, 姓名, Sys_Connect_By_Path(部门, ,) AS 部门 ?????????

文档评论(0)

ktj823 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档