CN104881460A - 一种基于Oracle数据库实现多行数据并为一行显示的方法 - Google Patents
一种基于Oracle数据库实现多行数据并为一行显示的方法 Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace 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的最大列数是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。
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)
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 | 浪潮集团山东通用软件有限公司 | 一种对多行数值列存储成一行的方法 |
-
2015
- 2015-05-22 CN CN201510267046.4A patent/CN104881460A/zh active Pending
Patent Citations (4)
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)
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 |