sql - 是否有一个函数可以将sql中的下一行列值交换到当前行列值

标签 sql oracle

Column1 Column2 Column3
Row1    x1  x2  y2
Row2    y1  y2  z2
Row3    z1  z2  (next row4 column2.value)

我正在尝试获取一个sql查询,其中我要从row2.column2打印column3

最佳答案

我认为您需要的是LAG:

SQL> with test (id, col1, col2, col3) as
  2    (select 1, 'x1', 'x2', null from dual union all
  3     select 2, 'y1', 'y2', null from dual union all
  4     select 3, 'z1', 'z2', null from dual
  5    )
  6  select id, col1, col2, lead(col2) over (order by id) col3
  7  from test
  8  order by id;

        ID COL1 COL2 COL3
---------- ---- ---- ----
         1 x1   x2   y2
         2 y1   y2   z2
         3 z1   z2

SQL>

我已经包含了 ID 列,因为您必须有一些东西来对行进行排序。不一定是ID,可以是某个日期值或其他任何值。

关于sql - 是否有一个函数可以将sql中的下一行列值交换到当前行列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56475097/

相关文章:

sql - Oracle SQL 选择不同

java - 与文件系统相比,使用数据库存储配置信息的优缺点是什么

mysql - 在 MySQL 中将多行合并为一行,无需组连接

mysql - 为总和(工作时间)< x 的用户选择最大日期

oracle - 使用 OraOLEDB 提供商部署应用程序

oracle - 如何使用现有的 Oracle 序列在 hibernate 中生成 id?

mysql - SQL查询从两个日期列中获取工作日

MYSQL 选择重复的行,其中重复 2 或 3 列值

oracle - 如何从 Pl/SQL 中的存储函数返回临时 CLOB 实例?

sql - 在 Oracle 中的每个级别计算最小值的分层查询