Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 上期_Sql_Oracle - Fatal编程技术网

Sql 上期

Sql 上期,sql,oracle,Sql,Oracle,我想用同一张表来计算年变化率。 比如, T Value 31.12.2019 30 31.12.2018 45 31.12.2017 20 31.12.2016 36 T-T-1/T-1。2018年=45-20/20 我的表中有客户ıd、条款和价值。如果我理解正确: select * ,(Value - PrvValue) / PrvValue as changeRate ( select * , LAG(Value,

我想用同一张表来计算年变化率。 比如,

     T          Value 
     31.12.2019 30
     31.12.2018 45
     31.12.2017 20
     31.12.2016 36
T-T-1/T-1。2018年=45-20/20


我的表中有客户ıd、条款和价值。

如果我理解正确:

select * ,(Value - PrvValue) / PrvValue as changeRate
( 
  select * , LAG(Value,1,Value) over (order by T))  PrvValue 
  from yourtable
) tt

您可以确定CTE中以前的值和当前值,然后在主查询中使用它们:

WITH cteSome_table
  AS (SELECT T,
             VALUE,
             LAG(VALUE, 1, VALUE) OVER (ORDER BY T) AS PREV_VALUE
        FROM SOME_TABLE)
SELECT T,
       (VALUE - PREV_VALUE) / PREV_VALUE
  FROM cteSome_table
  ORDER BY T

我认为这更容易阅读和理解。

我感到困惑。你的桌子是什么样子的?你想要什么结果?同时标记您正在使用的数据库。我正在使用oracle,必须有周期性的更改率。如何显示我的表格,有客户、条款、价值观。您显示了一个表,但它没有这些列。