gpt4 book ai didi

sql - ORACLE PL SQL 中的三行前导函数

转载 作者:行者123 更新时间:2023-12-02 09:04:32 25 4
gpt4 key购买 nike

我的 table :

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>

关于sql - ORACLE PL SQL 中的三行前导函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60054015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com