[发明专利]一种基于Oracle数据库实现多行数据并为一行显示的方法在审
申请号: | 201510267046.4 | 申请日: | 2015-05-22 |
公开(公告)号: | CN104881460A | 公开(公告)日: | 2015-09-02 |
发明(设计)人: | 张来卿;徐震宇;季统凯 | 申请(专利权)人: | 国云科技股份有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 广东莞信律师事务所 44332 | 代理人: | 余伦 |
地址: | 523808 广东省东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 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 BY 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 BY N_DEPT_CODE,C_EMPLOY_CODE)x FROM m_dept_employ_rel ORDER BY N_DEPT_CODE,C_EMPLOY_CODE)a CONNECT BY N_DEPT_CODE=PRIOR N_DEPT_CODE AND x-1=PRIOR x))WHERE rn=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”按组内序号相邻关系,为每一层进行不同行的“人员代码”叠加;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国云科技股份有限公司,未经国云科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510267046.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:元数据管理系统
- 下一篇:管理存储在仓库内的资源之间的关系