CN104881460A - 一种基于Oracle数据库实现多行数据并为一行显示的方法 - Google Patents

一种基于Oracle数据库实现多行数据并为一行显示的方法 Download PDF

Info

Publication number
CN104881460A
CN104881460A CN201510267046.4A CN201510267046A CN104881460A CN 104881460 A CN104881460 A CN 104881460A CN 201510267046 A CN201510267046 A CN 201510267046A CN 104881460 A CN104881460 A CN 104881460A
Authority
CN
China
Prior art keywords
code
dept
line
employ
oracle database
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201510267046.4A
Other languages
English (en)
Inventor
张来卿
徐震宇
季统凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
G Cloud Technology Co Ltd
Original Assignee
G Cloud Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by G Cloud Technology Co Ltd filed Critical G Cloud Technology Co Ltd
Priority to CN201510267046.4A priority Critical patent/CN104881460A/zh
Publication of CN104881460A publication Critical patent/CN104881460A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及Oracle数据库技术领域,尤其是一种基于Oracle数据库实现多行数据并为一行显示的方法。本发明方法的步骤如下:1、利用“ROW_NUMBER()OVER(PARTITION BY......”为按“部门代码”汇总后的数据行添加组内序号;2、“SYS_CONNECT_BY_PATH”按组内序号相邻关系,为每一层进行不同行的“人员代码”叠加;3、再次利用“部门代码进行组内分组,但按第二部中的层次排倒序,增加调整后等级;4、取所有调整后等级为1的结果,即为所要求的数据行。本发明解决了在Oracle数据库实现多行数据并为一行显示的问题;可以用于Oracle的数据管理。

Description

一种基于Oracle数据库实现多行数据并为一行显示的方法
技术领域
本发明涉及Oracle数据库技术领域,尤其是一种基于Oracle数据库实现多行数据并为一行显示的方法。
背景技术
Oracle是甲骨文公司的一款关系数据库管理系统。Oracle的最大列数是1000。
目前面临的主要问题有:
在使用Oracle数据库时,经常遇到需要将多行数据合并为一行数据的情况,但通常而言都是编写自定义多行文本合并函数,但是对支持的列数具有局限性。
发明内容
本发明解决的技术问题在于提供一种基于Oracle数据库实现多行数据并为一行显示的方法,解决了在使用Oracle数据库时,需要将多行数据合并为一行数据的情况,并解决了对数据库列数的限制问题。
本发明解决上述技术问题的技术方案是:
所述的方法步骤如下:
步骤一,利用“ROW_NUMBER()OVER(PARTITION BY......”为按“部门代码”汇总后的数据行添加组内序号;
步骤二,“SYS_CONNECT_BY_PATH”按组内序号相邻关系,为每一层进行不同行的“人员代码”叠加;
步骤三,再次利用“部门代码进行组内分组,但按第二步中的层次排倒序,增加调整后等级;
步骤四,取所有调整后等级为1的结果,即为所要求的数据行。
2、根据权利1要求所述的显示的方法,其特征在于:所述的多行数据指的是:保存了“部门”与“部门员工”的对应关系数据。
3、根据权利1或23所述的显示的方法,所述的方法的实现语句为:
SELECT N_DEPT_CODE,TRANSLATE(LTRIM(text,′/′),′/′,′,′)researcherList FROM(SELECT ROW_NUMBER()OVER(PARTITION BYN_DEPT_CODE ORDER BY N_DEPT_CODE,lvl DESC)rn,N_DEPT_CODE,text FROM(SELECT N_DEPT_CODE,LEVEL lvl,SYS_CONNECT_BY_PATH(C_EMPLOY_CODE,′/′)text FROM(SELECTN_DEPT_CODE,C_EMPLOY_CODE as C_EMPLOY_CODE,ROW_NUMBER()OVER(PARTITION BY N_DEPT_CODE ORDER BYN_DEPT_CODE,C_EMPLOY_CODE)x FROM m_dept_employ_relORDER BY N_DEPT_CODE,C_EMPLOY_CODE)a CONNECT BYN_DEPT_CODE=PRIOR N_DEPT_CODE AND x-1=PRIOR x))WHERErn=1 ORDER BY N_DEPT_CODE。
本发明的有益效果:本发明的方法可以实现Oracle数据库中需要将多行数据合并为一行数据的情况,并解决了对Oracle数据库列数的限制问题。
附图说明
下面结合附图对本发明进一步说明:
图1是本发明的流程图。
具体实施方式
如图1所示,本发明的具体步骤为:
步骤一,创建表结构如下:
NAME Null Type
------------------------ --------- -----
N_DEPT_CODE NOT NULL CHAR(6)--部门
C_EMPLOY_CODE NOT NULL VARCHAR2(20)--部门员工
步骤二,插入数据
此表保存了“部门”与“部门员工”的对应关系数据,一般而言,对于同一只部门而言,可能有多个员工,对其进行跟踪研究,需查询出每个部门和对应的员工(员工代码间,使用逗号分隔)。
例如有如下数据:
000101 zhanglq
000101 dingjf
000101 wenxi
步骤三,实现SQL步骤:
1、利用“ROW_NUMBER()OVER(PARTITION BY......”为按“部门代码”汇总后的数据行添加组内序号;
2、“SYS_CONNECT_BY_PATH”按组内序号相邻关系,为每一层进行不同行的“人员代码”叠加;
3、再次利用“部门代码进行组内分组,但按第二部中的层次排倒序,增加调整后等级;
4、取所有调整后等级为1的结果,即为所要求的数据行
SELECT N_DEPT_CODE,TRANSLATE(LTRIM(text,′/′),′/′,′,′)researcherList FROM(SELECT ROW_NUMBER()OVER(PARTITIONBY N_DEPT_CODE ORDER BY N_DEPT_CODE,lvl DESC)rn,N_DEPT_CODE,text FROM(SELECT N_DEPT_CODE,LEVEL lvl,SYS_CONNECT_BY_PATH(C_EMPLOY_CODE,′/′)text FROM(SELECT N_DEPT_CODE,C_EMPLOY_CODE as C_EMPLOY_CODE,ROW_NUMBER()OVER(PARTITION BY N_DEPT_CODE ORDER BYN_DEPT_CODE,C_EMPLOY_CODE)x FROM m_dept_employ_relORDER BY N_DEPT_CODE,C_EMPLOY_CODE)a CONNECT BYN_DEPT_CODE=PRIOR N_DEPT_CODE AND x-1=PRIOR x))WHERE rn=1ORDER BY N_DEPT_CODE;
步骤四,执行SQL语句
执行SQL语句实现的效果为:
000101 zhanglq,dingjf,wenxi
步骤五,本发明扩展
只需要把SQL中“N_DEPT_CODE”换为你的用来汇总的列,“C_EMPLOY_CODE”替换为需合并文本的列,“m_dept_employ_rel”替换为你的表名,即可适用于其他场景。

Claims (3)

1.一种基于Oracle数据库实现多行数据并为一行显示的方法,其特征在于:所述的方法步骤如下:
步骤一,利用“ROW_NUMBER()OVER(PARTITION BY......”为按“部门代码”汇总后的数据行添加组内序号;
步骤二,“SYS_CONNECT_BY_PATH”按组内序号相邻关系,为每一层进行不同行的“人员代码”叠加;
步骤三,再次利用“部门代码进行组内分组,但按第二步中的层次排倒序,增加调整后等级;
步骤四,取所有调整后等级为1的结果,即为所要求的数据行。
2.根据权利1要求所述的显示的方法,其特征在于:所述的多行数据指的是:保存了“部门”与“部门员工”的对应关系数据。
3.根据权利1或23所述的显示的方法,所述的方法的实现语句为:SELECTN_DEPT_CODE,TRANSLATE(LTRIM(text,'/'),'*/','*,')researcherList FROM(SELECT ROW_NUMBER()OVER(PARTITION BY N_DEPT_CODEORDER BY N_DEPT_CODE,lvl DESC)rn,N_DEPT_CODE,text FROM(SELECT N_DEPT_CODE,LEVEL lvl,SYS_CONNECT_BY_PATH(C_EMPLOY_CODE,'/')text FROM(SELECT N_DEPT_CODE,C_EMPLOY_CODE as C_EMPLOY_CODE,ROW_NUMBER()OVER(PARTITION BY N_DEPT_CODE ORDER BYN_DEPT_CODE,C_EMPLOY_CODE)x FROM m_dept_employ_relORDER BY N_DEPT_CODE,C_EMPLOY_CODE)a CONNECT BYN_DEPT_CODE=PRIOR N_DEPT_CODE AND x-1=PRIOR x))WHERErn=1 ORDER BY N_DEPT_CODE。
CN201510267046.4A 2015-05-22 2015-05-22 一种基于Oracle数据库实现多行数据并为一行显示的方法 Pending CN104881460A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510267046.4A CN104881460A (zh) 2015-05-22 2015-05-22 一种基于Oracle数据库实现多行数据并为一行显示的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510267046.4A CN104881460A (zh) 2015-05-22 2015-05-22 一种基于Oracle数据库实现多行数据并为一行显示的方法

Publications (1)

Publication Number Publication Date
CN104881460A true CN104881460A (zh) 2015-09-02

Family

ID=53948953

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510267046.4A Pending CN104881460A (zh) 2015-05-22 2015-05-22 一种基于Oracle数据库实现多行数据并为一行显示的方法

Country Status (1)

Country Link
CN (1) CN104881460A (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040117397A1 (en) * 2002-12-16 2004-06-17 Rappold Robert J Extensible database system and method
CN1592905A (zh) * 2000-05-26 2005-03-09 计算机联合思想公司 自动产生数据库查询的系统和方法
CN101453358A (zh) * 2007-12-06 2009-06-10 北京启明星辰信息技术股份有限公司 一种oracle数据库绑定变量的sql语句审计方法及系统
CN101645076A (zh) * 2009-09-07 2010-02-10 浪潮集团山东通用软件有限公司 一种对多行数值列存储成一行的方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1592905A (zh) * 2000-05-26 2005-03-09 计算机联合思想公司 自动产生数据库查询的系统和方法
US20040117397A1 (en) * 2002-12-16 2004-06-17 Rappold Robert J Extensible database system and method
CN101453358A (zh) * 2007-12-06 2009-06-10 北京启明星辰信息技术股份有限公司 一种oracle数据库绑定变量的sql语句审计方法及系统
CN101645076A (zh) * 2009-09-07 2010-02-10 浪潮集团山东通用软件有限公司 一种对多行数值列存储成一行的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
网际浪人,: ""ORACLE纯SQL实现多行合并一行"", 《HTTP://WWW.CNBLOGS.COM/HEEKUI/ARCHIVE/2009/07/30/ 1535516.HTML》 *

Similar Documents

Publication Publication Date Title
WO2019120320A3 (en) System and method for parallel-processing blockchain transactions
WO2020092446A3 (en) Methods and systems for improving machines and systems that automate execution of distributed ledger and other transactions in spot and forward markets for energy, compute, storage and other resources
EP3627338A3 (en) Efficient utilization of systolic arrays in computational processing
WO2021011314A8 (en) System and method for performing small channel count convolutions in energy-efficient input operand stationary accelerator
JP2017188137A5 (zh)
GB2581460A (en) Coalescing global completion table entries in an out-of-order processor
CN103425771B (zh) 一种数据正则表达式的挖掘方法及装置
CN103970578A (zh) 主从mcu升级方法
CN103714086A (zh) 用于生成非关系数据库的模式的方法和设备
AU2017322114A8 (en) Real-time document filtering systems and methods
GB2559896A (en) System and method for configuring separated monitor and effect blocks of a process control system
MY175611A (en) Information-processing system
CN105900093A (zh) 一种KeyValue数据库的数据表的更新方法与表数据更新装置
CN104156668A (zh) 一种多敏感属性数据的隐私保护重发布方法
CN107092655A (zh) 用于Android宽屏设备中组图的循环展示方法及系统
CN104424240A (zh) 多表关联方法、主服务节点、计算节点及系统
CN104391891B (zh) 一种数据库异构复制方法
CN110175202B (zh) 用于数据库的表的外连接的方法和系统
CN104881460A (zh) 一种基于Oracle数据库实现多行数据并为一行显示的方法
CN107515916A (zh) 数据查询的性能优化方法及装置
NO895068L (no) Produksjonslinjemetode og innretning for hoeyytelseinstruksjonsiverksettelse.
CN110515939A (zh) 一种基于gpu的多列数据排序方法
CN112685485B (zh) 数据获取方法、装置、电子设备、存储介质及程序产品
CN106294701B (zh) 网站前端的数据缓存系统及方法
CN104463823A (zh) 基于参考影像梯度信息的压缩感知遥感图像重建算法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20150902

WD01 Invention patent application deemed withdrawn after publication