ORACLE PL SQL中的三行领导功能

拉贾

我的桌子:

ID  NAME
1   SIVA
2   RAJA
3   PYTHON
4   SQL
5   ODI

我需要领先3行。

我的SQL查询:

SELECT LEAD(NAME,3) OVER (ORDER by NAME) as NAME FROM TEST_TABLE where NAME='SIVA' 

预期的输出:

--------
| NAME |
--------
| SQL  |
--------

例:

如果将值传递为SIVA,则需要获取SQL作为输出。

同样,如果我将值作为Raja传递,则需要获取ODI作为输出

是否有任何查询以获取预期的输出?

小脚丫

这可能是一个选择:它使用row_number分析功能来计算行号,这样您就不必依赖ID值。如果它们是按顺序获取的怎么办?这并非没有问题。基本上-用于安全

SQL> WITH test (id, name)
  2       AS (SELECT 1, 'siva' FROM DUAL
  3           UNION ALL
  4           SELECT 2, 'raja' FROM DUAL
  5           UNION ALL
  6           SELECT 3, 'python' FROM DUAL
  7           UNION ALL
  8           SELECT 4, 'sql' FROM DUAL
  9           UNION ALL
 10           SELECT 5, 'odi' FROM DUAL),
 11       temp AS (SELECT id, name, ROW_NUMBER () OVER (ORDER BY id) rn FROM test)
 12  SELECT b.name
 13    FROM temp a JOIN temp b ON b.rn = a.rn + 3
 14   WHERE a.name = '&name';
Enter value for name: siva

NAME
------
sql

SQL> /
Enter value for name: raja

NAME
------
odi

SQL> /
Enter value for name: sql

no rows selected

SQL>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章