在ETL过程中,经常会碰到取结果集的最后或最前一条记录。如取活期存款的当前利率,开户金额,协定利率等。如果不用LOOKUP的方式,如通过游标取或者ETL工具LOOKUP组件什么的,在一条SQL里实现,目前实现有几种方法。
1.以时间或其他字段分组后在自连自己,这样不仅可以带出需要LOOKUP的字段,还可以带出其他需要的字段。
SELECT A.CDDPTY CDDPTY,A.CDCURR CDCURR,A.CDVLDT CDVLDT,
A.CDYRAT CDYRAT
FROM DCPPDATA.TBBFMCDRT A INNER JOIN
(SELECT B.CDDPTY,B.CDCURR,MAX(B.CDVLDT) CDVLDT
FROM DCPPDATA.TBBFMCDRT B
GROUP BY B.CDDPTY, B.CDCURR) C
ON A.CDDPTY =C.CDDPTY
AND A.CDCURR =C.CDCURR
AND A.CDVLDT =C.CDVLDT
2.用ROW_NUMBER() OVER(ORDER BY filedName)
SELECT B.CDDPTY,B.CDCURR,
ROW_NUMBER() OVER(ORDER BY B.CDVLDT DESC)
FROM DCPPDATA.TBBFMCDRT B
WHERE ROWNUM = 1
分享到:
相关推荐
本文将深入探讨如何利用一条SQL语句在Oracle中快速生成10万条测试数据,这对于数据库管理员和开发人员来说是一项极为实用的技能。 ### 核心知识点:使用SQL生成大量测试数据 #### 1. **理解ROWNUM和CONNECT BY ...
本文将详细探讨三种常用的Oracle分页SQL方法:ROWNUM、ROWNUM结合子查询以及新引入的Oracle 12c的FETCH NEXT WITH OFFSET语法。这三种方法各有优缺点,适用于不同的场景。 1. ROWNUM方法: ROWNUM是Oracle中最基础...
ORACLE 采用两种访问表中记录的方式:全表扫描和通过 ROWID 访问表。 1. 全表扫描 全表扫描就是顺序地访问表中每条记录。ORACLE 采用一次读入多个数据块(database block)的方式优化全表扫描。 2. 通过 ROWID ...
本篇文章将详细介绍Oracle中实现多行记录合并的几种方法,包括使用SQL函数、集合操作以及自定义函数。 1. **使用SQL函数:** - **`LISTAGG()` 函数:** 这是Oracle 11g及以后版本引入的一个强大的聚合函数,专门...
Oracle 中抽取随机数的多种方法 在 Oracle 中抽取随机数是许多应用场景中常见的问题,例如在某个活动中需要随机取出一些符合条件的用户,以颁发获奖通知或其它消息。本文将通过实例讲解如何抽取随机数的多种方法。 ...
本文将详细介绍几种有效的方法来提高Oracle中SQL的执行效率,包括选择合适的表名顺序、优化WHERE子句中的连接顺序、减少不必要的数据库访问等策略。 #### 1. 选择最有效率的表名顺序 在基于规则的优化器中,Oracle...
在Oracle数据库中,有时我们需要将多个字段值转换为单个字符串,或者将多行记录合并成一行,这在数据处理和报告生成时尤其常见。Oracle提供了多种方法来实现这一目标,包括使用内置函数、PL/SQL过程以及一些高级特性...
为了优化性能,应将记录条数最少的表作为基础表放在最后。如果有三个或更多的表参与连接查询,则应考虑将交叉表(即被其他表引用的表)作为基础表。 #### 二、优化WHERE子句中的条件顺序 Oracle数据库在处理WHERE...
在ORACLE数据库中,SQL优化是指通过一系列手段来提高SQL语句的执行速度,以减少对系统资源的消耗,提高整体性能。 首先,了解SQL语句的执行过程是进行优化的前提。SQL语句的执行主要分为四个阶段:语法阶段、优化...
Oracle数据库在处理多行记录合并、连接和聚合字符串时,有多种方法,下面将详细介绍其中的几种常见技术。 1. 被集合字段范围小且固定型 这种方法适用于字段值有限且已知的情况。通过使用`DECODE`函数,我们可以为每...
本文将详细介绍几种常用的查询和删除Oracle数据库中重复记录的方法。 #### 一、查询重复数据 1. **使用ROWID** ROWID是Oracle提供的一种特殊数据类型,它表示表中行的物理地址。通过ROWID可以快速定位到表中的某...
这种方法告诉Oracle优先处理前面的几条记录,适用于那些只需要快速获取分页查询结果的应用场景。 #### 七、总结 通过以上分析可以看出,在Oracle中实现高效的分页查询需要综合考虑查询结构、索引使用以及查询优化...
要删除Oracle数据库表中的重复记录,有几种方法可以采用: ##### 方法一:使用子查询与DELETE语句 这种方法适用于只需要删除重复记录中的某些行的情况。步骤如下: 1. **找出重复的记录**:首先,我们需要找到...
这意味着当执行一条与之前相同的SQL语句时,Oracle可以直接从缓存中获取结果,从而大大减少了执行时间。然而,Oracle只会缓存最近经常使用的SQL语句,并且如果缓存区已满,旧的SQL语句可能会被清除以腾出空间给新的...
交叉连接也称为笛卡尔积,它返回左表与右表中每一条记录的组合。如果没有WHERE子句来过滤结果,将会产生大量的无意义组合。 **语法示例:** ```sql SELECT * FROM TableA CROSS JOIN TableB; ``` **应用场景:** ...
本文将介绍几种有效的方法,以帮助你在遇到重复记录问题时能有效地清理数据。我们将以Oracle数据库为例,但这些方法在其他SQL数据库系统中也具有一定的通用性。 首先,让我们通过一个简单的例子来理解问题。假设...
根据给定文件中的标题、描述、标签以及部分内容,本文将详细介绍在Oracle数据库中删除重复数据的几种方法。这些方法利用了ROWID、GROUP BY、DISTINCT等关键字来实现数据去重的功能。 ### 1. 使用ROWID进行去重 ...