`
543089122
  • 浏览: 154012 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

oracle9i,10g行列转换

阅读更多
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)就行。
分享到:
评论

相关推荐

    Oracle 9i10g 数据库管理详细

    ### Oracle 9i/10g 数据库管理详细知识点 #### 一、Oracle 9i/10g 概述 - **Oracle 9i** 和 **Oracle 10g** 是Oracle公司推出的两个重要的数据库管理系统版本。这些版本在企业级数据库管理领域具有重要意义。 - *...

    Oracle 9i 10g 11g odbc driver数据库连接驱动

    ODBC提供了一种标准化的方法,使得开发者可以通过SQL来访问各种数据库,包括Oracle 9i、10g和11g版本。 Oracle 9i ODBC驱动程序是针对Oracle 9.2版数据库设计的,它支持JDBC(Java Database Connectivity)和ODBC...

    oracle9i10g编程艺术.rar

    Oracle 9i与10g是Oracle数据库的两个重要版本,它们在数据库管理、SQL查询、存储过程编写、性能优化等方面都有丰富的知识等待探索。Oracle数据库是全球广泛使用的大型关系型数据库系统,尤其在企业级应用中占据主导...

    oracle10g数据导入到oracle9i解决方案

    ### Oracle 10g 数据导入到 Oracle 9i 解决方案 #### 背景介绍 在进行数据库迁移时,可能会遇到将Oracle 10g中的数据迁移到Oracle 9i的情况。由于Oracle 9i与Oracle 10g之间存在版本差异,这可能涉及到一些兼容性...

    oracle9i全备份导入到11g说明

    ### Oracle 9i 全备份导入到 11g 的处理方法 #### 一、问题背景 当将Oracle 9i的数据全备份导入到Oracle 11g版本时,经常会遇到由于`db_block_size`参数不一致导致的导入失败问题。这种情况下,如果直接进行导入...

    Oracle 9i、10g、11g通用jdbc驱动包

    Oracle 9i、10g、11g通用JDBC驱动包是Oracle公司为Java开发者提供的数据库连接驱动,使得Java应用程序能够与Oracle数据库进行交互。这些驱动程序遵循Java Database Connectivity (JDBC) API规范,是Java平台上的标准...

    Oracle 9i Client (Oracle 9i 客户端) 简化版 (不安装Oracle客户端,也可以使用PLSQL Developer)

    Oracle 9i Client (Oracle 9i 客户端) 简化版 (不安装Oracle客户端,也可以使用PLSQL Developer 不用安装Oracle客户端也可以使用PLSQL Developer 绿色! 安全! 轻便! 可靠! 1、本软件可作为简单的Oracle9i客户端...

    oracle 9i 全部下载链接

    根据提供的标题、描述、标签及部分内容,我们可以整理出关于Oracle 9i的多个关键知识点,主要包括不同操作系统下的版本、下载链接以及如何获取这些资源的方法。 ### Oracle 9i概述 Oracle 9i 是甲骨文公司(Oracle ...

    oracle 9i & 10g

    Oracle数据库是全球广泛使用的大型企业级关系型数据库管理系统之一,其9i和10g版本在21世纪初尤其流行。这两个版本引入了许多创新特性,增强了数据库的性能、可用性和可扩展性。以下是对"Expert Oracle Database ...

    Oracle 9i10g 数据库备份与恢复

    ### Oracle 9i/10g 数据库备份与恢复知识点详解 #### 一、Oracle 9i/10g 数据库备份与恢复概览 **标题与描述**中提到的“Oracle 9i/10g 数据库备份与恢复”是指在Oracle 9i和10g版本中进行数据库备份和恢复的过程...

    Oracle 9i 11g历史库升级迁移数据至19c CDB.docx

    ### Oracle 9i/11g 历史库升级迁移数据至 19c CDB #### 背景介绍 随着业务的发展和技术的进步,企业数据库系统面临着更新换代的需求。本文档主要介绍了如何将Oracle 9i/11g的历史数据库升级并迁移数据至Oracle 19c...

    Oracle 9i&10g 编程艺术

    《Oracle 9i&10g 编程艺术》是一本专为数据库开发人员精心编写的经典技术书籍,它深入浅出地介绍了Oracle 9i和10g这两个版本的编程技术和最佳实践。Oracle数据库是全球广泛使用的数据库管理系统之一,尤其在企业级...

    oracle9i物理结构,oracle9i物理结构

    Oracle 9i 物理结构是数据库管理系统的核心组成部分,它决定了数据如何在磁盘上存储、管理和访问。Oracle 9i 物理结构主要由以下几个关键组件构成: 1. **数据文件 (Data Files)**: 扩展名为 .DBF 的数据文件是...

    Oracle9i客户端精简版

    Oracle9i客户端精简版。 Oracle9i客户端精简版Oracle9i客户端精简版Oracle9i客户端精简版Oracle9i客户端精简版Oracle9i客户端精简版Oracle9i客户端精简版Oracle9i客户端精简版

    oracle9i客户端精简版.zip

    Oracle 9i客户端精简版是一款专为数据库测试和数据检查设计的应用,它提供了一个轻量级的解决方案,便于快速安装和使用。这个版本优化了内存占用,节省了磁盘空间,使得用户能够迅速地进行数据库连接、查看表结构...

    oracle9i310.rar

    由于其资源占用较小,因此特别适合这些环境下使用,同时也能连接到更高版本的Oracle数据库,如10g和11g。 Oracle 9i客户端主要包含以下组件和功能: 1. **Oracle Net Services**:这是客户端与服务器通信的核心...

    windows server 2003 Oracle9i 安装

    Windows Server 2003 Oracle9i 安装指南 Windows Server 2003 是微软公司推出的服务器操作系统,而 Oracle9i 是 Oracle 公司推出的关系数据库管理系统。本文档将指导读者在 Windows Server 2003 上安装 Oracle9i ...

    Oracle 9i10g编程艺术.pdf

    Oracle 9i和10g是Oracle数据库的两个重要版本,它们在数据库管理、SQL查询、PL/SQL编程以及性能优化方面提供了丰富的功能。在这本《Oracle 9i10g编程艺术》中,读者可以深入理解这两个版本的精髓。 Oracle 9i,全称...

    Oracle9i、10g、11g编程艺术(中文版).pdf

    Oracle9i、10g、11g编程艺术(中文版).pdf

Global site tag (gtag.js) - Google Analytics