Sql 查询以查找员工的工资

Sql 查询以查找员工的工资,sql,oracle,oracle11g,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 结果如下 select rownum as Salary, (rownum + 1) as In

我正在用Oracle编写一个查询,如下所示

select rownum as Salary, (rownum + 1) as Increment,(rownum + (rownum + 1)) as Total from dual;
Salary   Increment   Total
---------------------------
    1            2        3
结果如下

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
在上面的结果中,第一行的总数将成为下一行的工资,
例如,增量金额将为2,第2行的合计将成为第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);

此查询将为您提供该结果。使用“按级别连接”创建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);

你在用桌子吗。因为只要加入dual,你就会得到一张唱片。张贴您的实际表格和一些示例数据。您是否在使用某些表格。因为只要加入dual,你就会得到一张唱片。发布您的实际表格和一些示例数据这一逻辑是否与所需的“n-1行的总计将成为n行中的薪资”相同,或者这只是在不考虑逻辑的情况下产生相同的输出?@Plirkee是的,我使用
lag(totalAux)over(order by SalaryAux)
检索n-1总计并将其放入薪资中。当n=1时,
Lag()
将为您提供
null
,因此我使用了
NVL()
来避免它。@Plirkee有关
Lag()
LEAD()
分析函数的详细信息:是的,我熟悉
Lag
LEAD
(感谢链接)。我怀疑的是
总计算量。。似乎这只适用于特定的数字。我的意思是,如果我们有一个初始的任意
工资
,以及每个级别的任意
增量
,那么您的方法仍然有效吗?@Plirkee Lag将用于检索
总计
。如果
increment
是任意的,那么您是对的,
totalAux
的计算将不起作用。您需要一个表来完成此操作。不管怎么说,这是akward的一种要求,我仍然不知道OP在寻找什么。这个逻辑与要求的“n-1行的总数将成为n行中的工资”相同,还是不管逻辑如何,这只是产生相同的输出?@Plirkee是的,我使用的是
lag(totalAux)over(按SalaryAux排序)
检索n-1总计并将其放入工资中。当n=1时,
Lag()
将为您提供
null
,因此我使用了
NVL()
来避免它。@Plirkee有关
Lag()
LEAD()
分析函数的详细信息:是的,我熟悉
Lag
LEAD
(感谢链接)。我怀疑的是
总计算量。。似乎这只适用于特定的数字。我的意思是,如果我们有一个初始的任意
工资
,以及每个级别的任意
增量
,那么您的方法仍然有效吗?@Plirkee Lag将用于检索
总计
。如果
increment
是任意的,那么您是对的,
totalAux
的计算将不起作用。您需要一个表来完成此操作。这是一种阿克沃德的要求,无论如何,我仍然不知道OP在寻找什么。