`
yhef
  • 浏览: 69660 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

LAG\LEAD用法

 
阅读更多
简介:
偏移量函数,可以实现将当前记录的(前、后)记录的字段值,当成当前记录的字段展示。

一、资源准备:
1:建表
create table TEST_1
(
  c1 VARCHAR2(10),
  c2 VARCHAR2(10),
  c3 VARCHAR2(10)
);

2:数据准备
insert into TEST_1 (C1, C2, C3)
values ('A', '2012-01', '201201');

insert into TEST_1 (C1, C2, C3)
values ('B', '2012-01', '201201');

insert into TEST_1 (C1, C2, C3)
values ('C', '2012-01', '201201');

insert into TEST_1 (C1, C2, C3)
values ('C', '2012-02', '201202');

insert into TEST_1 (C1, C2, C3)
values ('C', '2012-03', '201203');

insert into TEST_1 (C1, C2, C3)
values ('A', '2012-02', '201202');

insert into TEST_1 (C1, C2, C3)
values ('D', '2012-01', '201201');

insert into TEST_1 (C1, C2, C3)
values ('C', '2012-06', '201206');

二、执行
SELECT T.C1,
       T.C2,
       (T.C3) CURRENT_MONTH,
       decode(lag(c2) over(PARTITION BY T.C1 order by c2),
              to_char(add_months(to_date(c2, 'yyyy-mm'), -1), 'yyyy-mm'),
              LAG(C3) OVER(PARTITION BY T.C1 ORDER BY T.C2),
              0) PREV_MONTH,
       LEAD(C3,1,0) OVER(PARTITION BY T.C1 ORDER BY T.C2) NEXT_MONTH
  FROM TEST_1 T
 GROUP BY T.C1, T.C2, T.C3
 ORDER BY T.C1, T.C2;

三、结果





四、解读
LAG使用的DECODE,如果不是前一个月的数据,则用0表示,
LEAD则没有这样判断,只要是同一个PARTITION的数据,则按ORDER BY 的顺序列出。
  • 大小: 23 KB
分享到:
评论

相关推荐

    delay_early_gate.rar_FPGA delay_digital lead lag_syn_超前滞后同步_超前

    本压缩包文件"delay_early_gate.rar"涉及的核心技术是全数字超前—滞后门(Digital Lead-Lag Gate)的符号同步算法在FPGA上的实现,主要通过Verilog硬件描述语言进行编程。 超前—滞后同步(Lead-Lag ...

    oracle lag 实现同一字段的前N行的数据和后N行的值

    根据提供的文件信息,本文将详细解释如何在Oracle数据库中使用`LAG`函数来获取同一字段的前N行数据,以及如何使用`LEAD`函数获取后N行的值。 ### Oracle LAG 和 LEAD 函数简介 #### 1. LAG 函数 `LAG`函数是Oracle...

    基于matlab的控制理论串联校正

    在MATLAB中,可以使用`lead`函数来设计超前校正器,例如: ```matlab K = 1; % 比例系数 Td = 0.5; % 超前时间常数 C_lead = lead(K,Td); ``` 然后将`C_lead`与原始系统`G`串联,形成新的系统`G_c`。 **滞后校正...

    oracle row_number用法

    例如,结合`LAG()`和`LEAD()`函数可以实现数据的前后对比;与`RANK()`和`DENSE_RANK()`结合则可以进一步细化排序逻辑,为数据分析提供更多的可能性。 #### 五、总结 `ROW_NUMBER()`函数是Oracle数据库中一个非常...

    oracle查询相邻上下行值

    ##### 方法二:使用`LAG()`和`LEAD()`窗口函数 `LAG()`和`LEAD()`函数是Oracle 11g中新增的窗口函数,它们可以轻松地获取当前行之前或之后的行的值。 1. **`LAG()`函数**:返回指定列在当前行之前n行的值。 2. **`...

    oracle分组排序统计高级用法

    ### Oracle 分组排序统计高级用法详解 #### 一、Oracle分组排序和统计概述 在Oracle数据库中,实现分组排序和统计是一项常见的需求,主要用于处理大量的数据,并从中提取有价值的信息。通过合理运用SQL语句,特别...

    matlab.-lead-compesator.rar_matlab例程_matlab_

    在MATLAB中,lead compensator是一种控制器设计方法,用于改善系统的动态性能,特别是提升系统响应的速度和稳定性。这个压缩包“matlab.-lead-compesator.rar”包含的是一个MATLAB的示例代码,用于演示如何设计和...

    Oracle分析函数基本概念和语法总结及Regexp_***用法

    带星号(*)的函数表示支持窗口函数,例如LAG, LEAD等。 2. `partition_clause`:允许根据一个或多个列对数据进行分区,每个分区被视为独立的组。如果不指定,整个结果集被视为一个组。 3. `order_by_clause`:定义了...

    计算机sql语言的基础用法和常见用法

    常用的窗口函数有`ROW_NUMBER`、`RANK`、`DENSE_RANK`、`LEAD`、`LAG`等。例如: ```sql SELECT id, name, email, ROW_NUMBER() OVER (ORDER BY id) AS row_num FROM users; ``` 这条命令将在结果集中为每条记录...

    特权sdram相移估算

    2. 计算最大滞后(Maximum Lag)和最大超前(Maximum Lead),它们是Read Lag和Write Lag中的最小值。 3. 最终的相移值由最大滞后和最大超前的平均值决定,这确保了数据在读写操作中都能正确对齐。 在实际应用中,还...

    Oracle函数及其用法

    2. LAG()和LEAD():获取当前行之前或之后的值。 3. FIRST_VALUE()和LAST_VALUE():获取分组内第一行或最后一行的值。 八、数学和统计函数 1. POWER():计算一个数的幂。 2. SQRT():平方根。 3. DECODE():如果第一...

    经典的SQL sql高级用法

    比如RANK()、ROW_NUMBER()、LEAD()和LAG()函数可用于排名、获取相邻行的数据等。 5. **自连接**:在同一个表中,一个表可以连接到自身,用于比较表中的不同记录,如查找员工的上级或者找出具有相同属性但不完全相同...

    复杂SQL语言进阶教程:从基础到高级查询构建技巧

    以及窗口函数(如ROW_NUMBER、RANK、DENSE_RANK、SUM OVER、LAG、LEAD)的应用技巧。最后通过一个综合示例,展示了如何使用这些知识点构建复杂的SQL查询。 适合人群:具备基础SQL知识并希望深入学习复杂SQL查询和...

    at 我 分析函数,看这些就可以了at

    Oracle中的分析函数包括ROW_NUMBER(), RANK(), DENSE_RANK(), LAG(), LEAD(), FIRST_VALUE(), LAST_VALUE(), NTILE()等。 1. ROW_NUMBER():为每个分组内的行分配一个唯一的数字,通常用于排序或分页。 2. RANK() ...

    PSCAD中的控制系统模块

    4. Lead-Lag(前导延迟环节)模块: 前导延迟模块模拟了一个带增益的前导延迟函数,它的输出可随时由用户重置为指定的值。最大最小输出限制内部指定。对此函数的解法基于时间常数和过程如下所示:如果,则类似与PI...

    oracle分析函数

    在Oracle数据库中,分析函数(Analytic Functions)是一组强大的工具,用于执行复杂的数据分析,无需使用子查询或自连接等传统方法。这些函数能够基于一组行进行计算,并返回一个结果集,其中每一行都有一个根据整个...

    SQL开窗函数的基本概念、用法以及一些常见的开窗函数

    LAG() 和 LEAD() - **定义**: 这两个函数分别用于访问结果集中当前行之前的行或之后的行的值。 - **用法**: ```sql SELECT column1, column2, LAG(column2) OVER (ORDER BY column1) AS prev_value FROM table_...

    oracl 10G 函数用法例子

    - **分析函数**如`RANK()`, `DENSE_RANK()`, `ROW_NUMBER()`, `LAG()`, `LEAD()`, `FIRST_VALUE()`, `LAST_VALUE()`,用于窗口函数操作,提供在结果集上进行排序和计算的功能。 3. 条件判断函数: - **CASE**...

    经典SQL用法

    10. **窗口函数**:窗口函数如ROW_NUMBER、RANK、LEAD、LAG等,允许我们在结果集上进行复杂的计算,如分组内的排名、移动平均和差异计算,是数据分析中的强大工具。 以上只是SQL经典用法的一部分,实际应用中还有更...

    sql语句 各种sql语句的详细用法与讲解

    - 提供在行集上进行计算的能力,如`RANK()`, `ROW_NUMBER()`, `LEAD()`, `LAG()`, `OVER()`等。 11. **视图**: - 创建虚拟表,方便数据查询和保护底层数据,`CREATE VIEW view_name AS SELECT ...;` 12. **存储...

Global site tag (gtag.js) - Google Analytics