`
liuxx.adam
  • 浏览: 80946 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

根据相同主键,合并其他字段值,形成一条记录(oracle)

阅读更多
将具有相同的主键INVT_PROD_ID值,其他列值CLAUSE_MEMO,CLAUSE_TP_CD,BBCK_DT使用||进行合并,形成一条记录:
select INVT_PROD_ID,
       MAX(subStr(CLAUSE_MEMO, 3)) CLAUSE_MEMO,
       MAX(subStr(CLAUSE_TP_CD, 3)) CLAUSE_TP_CD,
       MAX(subStr(BBCK_DT, 3)) BBCK_DT
  from (SELECT INVT_PROD_ID,
               sys_connect_by_path(CLAUSE_MEMO, '' || '') CLAUSE_MEMO,
               sys_connect_by_path(CLAUSE_TP_CD, '' || '') CLAUSE_TP_CD,
               sys_connect_by_path(BBCK_DT, '' || '') BBCK_DT
          FROM (SELECT INVT_PROD_ID,
                       CLAUSE_MEMO,
                       CLAUSE_TP_CD,
                       BBCK_DT,
                       INVT_PROD_ID || rn rchild,
                       INVT_PROD_ID || (rn - 1) rfather
                  FROM (SELECT INVT_PROD_ID,
                               CLAUSE_MEMO,
                               CLAUSE_TP_CD,
                               BBCK_DT,
                               row_number() over(PARTITION BY A.INVT_PROD_ID ORDER BY A.CLAUSE_TP_CD) rn
                          FROM (Select CLAUSE_MEMO,
                                       CLAUSE_TP_CD,
                                       BBCK_DT,
                                       INVT_PROD_ID
                                  From V_J_B_CLAUSE
                                 where INVT_PROD_ID In
                                       (Select INVT_PROD_ID
                                          From V_J_B_CLAUSE
                                         Group By INVT_PROD_ID
                                        Having Count(*) > 1)) A) AA) AAA
        CONNECT BY PRIOR rchild = rfather
         START WITH rfather LIKE '' %0 '') AAAA
group by INVT_PROD_ID

union

Select to_char(INVT_PROD_ID),
       to_char(CLAUSE_MEMO),
       to_char(CLAUSE_TP_CD),
       to_char(BBCK_DT)
  From V_J_B_CLAUSE
where INVT_PROD_ID In (Select INVT_PROD_ID
                          From V_J_B_CLAUSE
                         Group By INVT_PROD_ID
                        Having Count(*) = 1)
分享到:
评论

相关推荐

    主键和外键.doc

    在关系型数据库中,每条记录都有若干个属性(字段),如果其中的一个属性组能够唯一地标识一条记录,那么这个属性组就可以成为一个主键。例如: - **学生表**(学号,姓名,性别,班级):每个学生的学号是唯一的,...

    Oracle实用教程(第五版)(Oracle11g版)

    设计这些表时,我们需要考虑合适的字段类型(如VARCHAR2、NUMBER)、主键(确保每条记录的唯一性)、外键(关联不同表之间的关系)以及索引(提高查询速度)。例如,学生表可能包含学生ID(主键)、姓名、性别等字段...

    oracle相关

    主键是表中能唯一标识一条记录的字段,而外键则是引用其他表主键的字段,用于在表之间建立关联。外键的定义要求其数据类型与所引用主键的数据类型相同,虽然某些系统允许数字字段与自动编号字段之间的关系。外键的值...

    oracle_sql笔记

    用于查询数据的基本结构是SELECT字段列表FROM表名WHERE条件,这允许我们从一个或多个表中提取满足特定条件的数据。INSERT语句用于向表中插入新记录,UPDATE用于修改现有记录,而DELETE则用于删除记录。 二、数据...

    oracle课件:第三章 数据管理.ppt

    `INSERT INTO` 命令用于向表中添加新记录,例如,在示例中向 `custom` 表中插入了一条包含个人地址和电话信息的新记录。`UPDATE` 命令则用于修改已存在的数据,如更改 `Postal_CountryCode` 的值。`DELETE` 命令用来...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

     删除环境变量中的PATHT CLASSPATH中包含Oracle的值。  删除“开始”/“程序”中所有Oracle的组和图标。  删除所有与Oracle相关的目录,包括: C:\Program file\Oracle目录。 ORACLE_BASE目录。 C:\Documents ...

    Oracle9i SQL最全的基本概念(包含3篇).zip

    每一列代表一个特定的数据类型,如整数、字符串或日期,每一行则表示一条记录。 4. **数据类型**:Oracle9i SQL支持多种数据类型,包括数值型(如NUMBER)、字符串型(如VARCHAR2)、日期时间型(如DATE)、二进制...

    oracle10笔记

    - **INSERT**:向表中插入一条或多条新记录。 - **UPDATE**:修改已存在的记录。 - **DELETE**:删除记录。 #### 18. 事务概述 - **事务**:一组逻辑上相关的操作,要么全部成功,要么全部失败。 #### 19. 表 - **...

    Oracle学习笔记.doc

    - **ROWNUM**是Oracle中的一个特殊字段,用于标识查询结果中的行号。 - 隐含字段ROWNUM: 默认情况下,Oracle会在查询结果中自动添加ROWNUM字段。 - 显示出前五条数据: `SELECT * FROM table WHERE ROWNUM ;`. - ...

    oracle sql基础 课件

    4. 主键:唯一标识表中每条记录的列或列组合,确保数据完整性。 5. 外键:引用另一个表的主键,建立表与表之间的关联。 三、查询语句(SELECT) 1. SELECT语句的基本语法:SELECT column1, column2 FROM table_name...

    《SQL语法范例大全SQLServer·Oracle通解》配套源码.rar

    总之,《SQL语法范例大全SQLServer·Oracle通解》及其配套源码为数据库学习者提供了一条理论与实践相结合的学习路径,无论是SQL Server新手还是Oracle管理员,都能从中受益匪浅。通过深入学习和实践,你将能够熟练...

    ORACLE数据库管理

    每一行代表一条记录,而每一列代表一种属性。表是关系数据库中最核心的对象之一。 ##### 1.3.2 索引 索引是在数据库表上创建的一种特殊的数据结构,它可以帮助加速数据检索速度。通过创建索引,可以在表的某一列或...

    Oracle 的基本操作(2)

    例如,插入一条员工记录: ```sql INSERT INTO employees (id, name, salary) VALUES (1, '张三', 5000); ``` 3. 更新(Update):更新已存在的数据使用`UPDATE`语句。比如,将员工`张三`的薪水提高至6000: ```...

    oracle学习课件

    Oracle学习课件是一份专为初学者设计的实训资料,旨在帮助他们掌握Oracle数据库的基础知识和操作技巧。...这是一条通往数据库管理员、数据库开发人员或相关IT职位的有效路径,对于提升个人职业竞争力具有重要意义。

    Oracle10G培训日志

    - 行代表一条记录,列代表数据的不同属性。 - 每个表都有一个唯一的名称,并且每个列都定义了其数据类型和可能的约束。 - **查看表结构**: - 使用`DESCRIBE 表名;`命令可以查看表的结构,包括表中的列、数据类型...

    索引总结 ,多年使用,工作培训

    这是因为无法保证只有一条符合条件的记录,因此必须逐一检查。 2. **使用索引的情况**:若在`name`字段上建立了索引,Oracle会在全表扫描的基础上,将每条记录的`name`值按升序排列,并构建索引条目(包含`name`和`...

    1.功能面试问答.pdf

    虽然数据库通常会自动为主键创建索引,但根据需要,开发者也可以为其他字段创建索引以优化查询性能。 【事务】 事务是数据库操作的基本单位,它封装了一条或多条DML(数据操纵语言)语句。事务具有四大特性:原子性...

Global site tag (gtag.js) - Google Analytics