我的桌子:
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] 删除。
我来说两句