1、oracle10g下行列转换:
select id,wm_concat(A) name from test3 group by id;
2、oracle9i行列转换:
test表的数据结构
id A
1 a
1 b
1 c
2 aa
2 bb
3 aaa
4 aaaa
sql:
with test1 as (select t.* from test t)
SELECT id,substr(max(sys_connect_by_path(A,',')),2)
FROM (SELECT id,A,rn, LEAD(rn) OVER(PARTITION BY id ORDER BY rn desc) rn1
FROM (SELECT id,A,ROW_NUMBER() OVER(ORDER BY id) rn FROM test1))
START WITH rn1 IS NULL
CONNECT BY rn1 = PRIOR rn
GROUP BY id;
一般行列转换都是复杂SQL得到一个数据块,所以这里用with表示了下。
sql分解:
1、
因为sql都是从内到外执行的,所以第一步肯定是:
with test1 as (select t.* from test t)
SELECT id,A,ROW_NUMBER() OVER(ORDER BY id) rn FROM test1;
结果:多加了一个rn的列,和rownum rn差不多
2、 运用开窗函数等找出父子关系
with test1 as (select t.* from test t)
SELECT id,A,rn, LEAD(rn) OVER(PARTITION BY id ORDER BY rn desc) rn1
FROM (SELECT id,A,ROW_NUMBER() OVER(ORDER BY id) rn FROM test1);
lead:lead(字段1,n) over ([partition by 字段2] order by 字段3),向当前行的前n行提取字段1的值.
data:
id A rn rn1
1 a 3 2
1 b 2 1
1 c 1
2 aa 5 4
2 bb 4
3 aaa 6
4 aaaa 7
这个结果集的rn和rn1列貌似具有父子关系?
3、start with ... connect by prior...
start with:开始遍历的节点
connect by prior:指定节点的父子关系
观察第二步得到的数据,以ID分组的话RN1始终有一个为NULL,rn则是1,2,3...,
so:start with rn1 is null 是必须的。
sys_connect_by_path这个函数是oracle9i出来的。
能对树形结构的某个字段(树枝)进行连接,so 连完后max下在substr等扫尾工作就OK啦。
如果想让多列出数据转行就多加几个substr(max(sys_connect_by_path(A,',')),2)就行。
分享到:
相关推荐
集合类型如`VARRAY`或`NATIVE ARRAY`也可以用于行列转换,特别是在Oracle 8i、9i和10g版本中。这种方法涉及创建集合类型的对象,然后将列数据插入到这些对象中。例如: 首先定义集合类型: ```sql CREATE TYPE cv_...
### Oracle 行列转换知识点详解 #### 一、概述 在数据库操作中,行列转换是一项非常实用的功能,尤其是在处理报表数据或需要特定格式输出时。本文档将详细讲解Oracle数据库中的行列转换方法,并通过具体实例来说明...
Oracle数据库提供了多种方法来实现这种转换,本篇将详细介绍如何在Oracle中进行行列转换,包括列转行、行转列以及各种复杂场景下的转换。 1. 列转行 列转行主要是将数据库表中的多列数据转换为多行数据。在Oracle...
嵌入式八股文面试题库资料知识宝典-华为的面试试题.zip
训练导控系统设计.pdf
嵌入式八股文面试题库资料知识宝典-网络编程.zip
人脸转正GAN模型的高效压缩.pdf
少儿编程scratch项目源代码文件案例素材-几何冲刺 转瞬即逝.zip
少儿编程scratch项目源代码文件案例素材-鸡蛋.zip
嵌入式系统_USB设备枚举与HID通信_CH559单片机USB主机键盘鼠标复合设备控制_基于CH559单片机的USB主机模式设备枚举与键盘鼠标数据收发系统支持复合设备识别与HID
嵌入式八股文面试题库资料知识宝典-linux常见面试题.zip
面向智慧工地的压力机在线数据的预警应用开发.pdf
基于Unity3D的鱼类运动行为可视化研究.pdf
少儿编程scratch项目源代码文件案例素材-霍格沃茨魔法学校.zip
少儿编程scratch项目源代码文件案例素材-金币冲刺.zip
内容概要:本文深入探讨了HarmonyOS编译构建子系统的作用及其技术细节。作为鸿蒙操作系统背后的关键技术之一,编译构建子系统通过GN和Ninja工具实现了高效的源代码到机器代码的转换,确保了系统的稳定性和性能优化。该系统不仅支持多系统版本构建、芯片厂商定制,还具备强大的调试与维护能力。其高效编译速度、灵活性和可扩展性使其在华为设备和其他智能终端中发挥了重要作用。文章还比较了HarmonyOS编译构建子系统与安卓和iOS编译系统的异同,并展望了其未来的发展趋势和技术演进方向。; 适合人群:对操作系统底层技术感兴趣的开发者、工程师和技术爱好者。; 使用场景及目标:①了解HarmonyOS编译构建子系统的基本概念和工作原理;②掌握其在不同设备上的应用和优化策略;③对比HarmonyOS与安卓、iOS编译系统的差异;④探索其未来发展方向和技术演进路径。; 其他说明:本文详细介绍了HarmonyOS编译构建子系统的架构设计、核心功能和实际应用案例,强调了其在万物互联时代的重要性和潜力。阅读时建议重点关注编译构建子系统的独特优势及其对鸿蒙生态系统的深远影响。
嵌入式八股文面试题库资料知识宝典-奇虎360 2015校园招聘C++研发工程师笔试题.zip
嵌入式八股文面试题库资料知识宝典-腾讯2014校园招聘C语言笔试题(附答案).zip
双种群变异策略改进RWCE算法优化换热网络.pdf