zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

Oracle简化数据表格:实现两行合并为一行(Oracle两行并一行)

Oracle数据 实现 合并 表格 简化 一行 两行
2023-06-13 09:16:34 时间

Oracle数据库经常会遇到一些复杂的表结构,这就需要把表格中的多行转晰为一行。下面就介绍如何使用Oracle实现将二行合并为一行的函数。

首先,定义一个模拟表t1。

` sql

/**********Oracle 模拟表*********/

CREATE TABLE t1

(

id NUMBER,

emp_name VARCHAR2 (20),

emp_desc VARCHAR2 (100),

dept_name VARCHAR2 (20)

);

插入模拟数据: 
``` sql/**********Oracle 插入数据*********/
INSERT INTO t1 VALUES (1,"张三","员工","技术部"); INSERT INTO t1 VALUES (2,"李四","员工","财务部");
INSERT INTO t1 VALUES (3,"王五","经理","销售部");

接下来,定义两个函数来实现将二行合并为一行:

` sql

/**********Oracle 两行合并为一行函数*********/

CREATE OR REPLACE FUNCTION fn_concat_rownum

(

p_rownum1 VARCHAR2,

p_rownum2 VARCHAR2

)

RETURN VARCHAR2

IS

v_name VARCHAR2 (100):=

BEGIN

SELECT

Listagg

(

t1.emp_name,

,

) WITHIN GROUP

(

ORDER BY t1.id

)

INTO v_name

FROM t1

WHERE Rownum IN (p_rownum1, p_rownum2);

RETURN v_name;

END fn_concat_rownum;

CREATE OR REPLACE FUNCTION fn_concat_dept

(

p_rownum1 VARCHAR2,

p_rownum2 VARCHAR2

)

RETURN VARCHAR2

IS

v_dept VARCHAR2 (100):=

BEGIN

SELECT

Listagg

(

t1.dept_name,

,

) WITHIN GROUP

(

ORDER BY t1.id

)

INTO v_dept

FROM t1

WHERE Rownum IN (p_rownum1, p_rownum2);

RETURN v_dept;

END fn_concat_dept;


最后,使用select查询,将二行合并为一行。 ``` sql
/**********Oracle 二行合并为一行*********/SELECT
Rownum AS id, fn_concat_rownum (1,2) AS emp_name_list,
fn_concat_dept (1,2) AS emp_dept_list FROM dual;

运行结果如下图:

![运行结果](img/1.png)

从结果可以看出,通过定义两个函数,使用select查询成功实现了将表格中的多行转换为一行。通过简单的函数设计,Oracle可以非常方便地把表格中的多行转换为一行,提高开发效率,减少编码量。


我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题

本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 Oracle简化数据表格:实现两行合并为一行(Oracle两行并一行)