我在Oracle中编写查询如下
select rownum as Salary, (rownum + 1) as Increment,(rownum + (rownum + 1)) as Total from dual;
结果如下
Salary Increment Total
---------------------------
1 2 3
但我正试图获得以下结果
Salary Increment Total
---------------------------
1 2 3
3 2 5
5 2 7
在上面的结果中,第1行的总计将成为下一行的工资, 实例的增量数量为2,第2行的总数将成为第3行的工资,依此类推。帮助我获得这个结果。
答案 0 :(得分:3)
此查询将为您提供该结果。使用按级别连接创建3行。 使用lag()检索以前的总数。 老实说,我不知道这是不是你想要的。
select nvl(lag(totalAux) over (order by SalaryAux), SalaryAux) as Salary,
increament,
totalAux as Total
from (
SELECT level AS SalaryAux,
2 AS Increament,
(level * 2)+1 AS TotalAux
FROM dual
connect by level <=3);
<强>输出强>
SALARY INCREAMENT TOTAL
---------- ---------- ----------
1 2 3
3 2 5
5 2 7