查询以查找员工的薪水

时间:2016-09-02 07:33:30

标签: sql oracle oracle11g

我在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行的工资,依此类推。帮助我获得这个结果。

1 个答案:

答案 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