将具有相同的主键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)
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)
发表评论
-
table拆分
2010-09-08 14:23 830oracle: insert all when 条件1 t ... -
用户无权登录PL/SQL Dev
2010-07-27 09:25 1382[转载]http://hi.baidu.com/xxoo_0/ ... -
查询存储过程中调用表情况(oracle)
2010-07-06 14:36 2128使用下列语句可以查询存储过程中引用了哪些表. select ... -
Oracle10g的SQL正则表达式支持
2010-01-19 10:56 1479[转自:http://database.51cto.com/a ... -
sql运行效率查询(oracle)
2009-09-27 17:54 1033SELECT EXECUTIONS, DISK_ ... -
查询表结构(oracle)
2009-09-23 17:18 20681.简略: select * from ALL_TAB_COL ... -
oracle if语句
2009-05-07 14:25 11810oracle 的 if语句比较特殊,没有else if,而是使 ... -
oracle 日期相关(连载中...)
2009-04-24 13:33 9591.下周周几为哪天: 取得下周周五日期: select nex ... -
修改 sql server 排序规则
2009-03-24 17:49 5503[转载] sql排序规则 如果要是区分大小写的话,就要改变数据 ... -
sql server 用户访问权限设置
2009-03-24 10:43 12649[转载] 原文地址:http://topic.csdn.net ... -
窄表变宽表方式
2009-03-24 10:18 49301.使用decode,根据窄表某字段的值,来判断作为宽表的哪个 ... -
oracle中java类的使用
2009-03-20 16:29 965java类创建: create or replace and ... -
oracle函数整合
2009-03-10 16:18 835oracle函数: 1.方差VARIANCE 2.绝对值AB ... -
排序(oracle)
2009-03-09 12:14 861根据INVT_PROD_ID和START_DT,按照ANN_D ... -
存储过程中游标使用
2009-03-04 14:08 1147oracle: 1.静态游标 create or replac ... -
oracle表空间创建语句
2009-03-02 10:08 1927常规表空间: CREATE SMALLFILE TA ... -
查询表空间大小(oracle)
2009-02-24 16:31 2577查询一般表空间: SELECT a.tablespace_na ... -
sqlserver导出数据到excel
2009-02-23 16:09 1266使用命令: exec rms..xp_cmdshell 'b ... -
数据库操作技巧
2009-02-18 10:34 9021.临时复制表及数据(oracle): create tabl ... -
存储过程错误消息处理
2009-02-17 17:43 1082存储过程错误消息处理(放在事务回滚rollback之前): - ...
相关推荐
在关系型数据库中,每条记录都有若干个属性(字段),如果其中的一个属性组能够唯一地标识一条记录,那么这个属性组就可以成为一个主键。例如: - **学生表**(学号,姓名,性别,班级):每个学生的学号是唯一的,...
设计这些表时,我们需要考虑合适的字段类型(如VARCHAR2、NUMBER)、主键(确保每条记录的唯一性)、外键(关联不同表之间的关系)以及索引(提高查询速度)。例如,学生表可能包含学生ID(主键)、姓名、性别等字段...
主键是表中能唯一标识一条记录的字段,而外键则是引用其他表主键的字段,用于在表之间建立关联。外键的定义要求其数据类型与所引用主键的数据类型相同,虽然某些系统允许数字字段与自动编号字段之间的关系。外键的值...
用于查询数据的基本结构是SELECT字段列表FROM表名WHERE条件,这允许我们从一个或多个表中提取满足特定条件的数据。INSERT语句用于向表中插入新记录,UPDATE用于修改现有记录,而DELETE则用于删除记录。 二、数据...
`INSERT INTO` 命令用于向表中添加新记录,例如,在示例中向 `custom` 表中插入了一条包含个人地址和电话信息的新记录。`UPDATE` 命令则用于修改已存在的数据,如更改 `Postal_CountryCode` 的值。`DELETE` 命令用来...
删除环境变量中的PATHT CLASSPATH中包含Oracle的值。 删除“开始”/“程序”中所有Oracle的组和图标。 删除所有与Oracle相关的目录,包括: C:\Program file\Oracle目录。 ORACLE_BASE目录。 C:\Documents ...
每一列代表一个特定的数据类型,如整数、字符串或日期,每一行则表示一条记录。 4. **数据类型**:Oracle9i SQL支持多种数据类型,包括数值型(如NUMBER)、字符串型(如VARCHAR2)、日期时间型(如DATE)、二进制...
- **INSERT**:向表中插入一条或多条新记录。 - **UPDATE**:修改已存在的记录。 - **DELETE**:删除记录。 #### 18. 事务概述 - **事务**:一组逻辑上相关的操作,要么全部成功,要么全部失败。 #### 19. 表 - **...
- **ROWNUM**是Oracle中的一个特殊字段,用于标识查询结果中的行号。 - 隐含字段ROWNUM: 默认情况下,Oracle会在查询结果中自动添加ROWNUM字段。 - 显示出前五条数据: `SELECT * FROM table WHERE ROWNUM ;`. - ...
4. 主键:唯一标识表中每条记录的列或列组合,确保数据完整性。 5. 外键:引用另一个表的主键,建立表与表之间的关联。 三、查询语句(SELECT) 1. SELECT语句的基本语法:SELECT column1, column2 FROM table_name...
总之,《SQL语法范例大全SQLServer·Oracle通解》及其配套源码为数据库学习者提供了一条理论与实践相结合的学习路径,无论是SQL Server新手还是Oracle管理员,都能从中受益匪浅。通过深入学习和实践,你将能够熟练...
每一行代表一条记录,而每一列代表一种属性。表是关系数据库中最核心的对象之一。 ##### 1.3.2 索引 索引是在数据库表上创建的一种特殊的数据结构,它可以帮助加速数据检索速度。通过创建索引,可以在表的某一列或...
例如,插入一条员工记录: ```sql INSERT INTO employees (id, name, salary) VALUES (1, '张三', 5000); ``` 3. 更新(Update):更新已存在的数据使用`UPDATE`语句。比如,将员工`张三`的薪水提高至6000: ```...
Oracle学习课件是一份专为初学者设计的实训资料,旨在帮助他们掌握Oracle数据库的基础知识和操作技巧。...这是一条通往数据库管理员、数据库开发人员或相关IT职位的有效路径,对于提升个人职业竞争力具有重要意义。
- 行代表一条记录,列代表数据的不同属性。 - 每个表都有一个唯一的名称,并且每个列都定义了其数据类型和可能的约束。 - **查看表结构**: - 使用`DESCRIBE 表名;`命令可以查看表的结构,包括表中的列、数据类型...
这是因为无法保证只有一条符合条件的记录,因此必须逐一检查。 2. **使用索引的情况**:若在`name`字段上建立了索引,Oracle会在全表扫描的基础上,将每条记录的`name`值按升序排列,并构建索引条目(包含`name`和`...
虽然数据库通常会自动为主键创建索引,但根据需要,开发者也可以为其他字段创建索引以优化查询性能。 【事务】 事务是数据库操作的基本单位,它封装了一条或多条DML(数据操纵语言)语句。事务具有四大特性:原子性...