Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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 plqsl复制vlookup_Sql_Oracle_Plsql - Fatal编程技术网

Sql plqsl复制vlookup

Sql plqsl复制vlookup,sql,oracle,plsql,Sql,Oracle,Plsql,我的查询返回下表: | CODE | DATE | VALUE | | 123 | 30/06/2012 | 11 | | 231 | 01/07/2012 | 22 | | 321 | 02/07/2012 | 11 | | 234 | 03/07/2012 | 11 | 我需要它来创建一个基于日期和值列的列。所以必须用今天的值除以前几天的值 因此,一旦查询运行,结果应该是: | CODE | DA

我的查询返回下表:

|  CODE  |    DATE    |  VALUE  |
|  123   | 30/06/2012 |   11    |
|  231   | 01/07/2012 |   22    |
|  321   | 02/07/2012 |   11    |
|  234   | 03/07/2012 |   11    |
我需要它来创建一个基于日期和值列的列。所以必须用今天的值除以前几天的值

因此,一旦查询运行,结果应该是:

|  CODE  |    DATE    |  VALUE  |  RET  |
|  123   | 30/06/2012 |   11    |       |
|  231   | 01/07/2012 |   22    |  2.0  |
|  321   | 02/07/2012 |   11    |  0.5  |
|  234   | 03/07/2012 |   11    |  0.0  |
就我所知:

SELECT
    CODE
    DATE
    VALUE 
    (DATE/(TO_DATE(DATE)-1)) AS RET
FROM
    ....
但很明显,你不能将一个日期除以另一个日期,然后期望得到一个数字


感谢

能够访问列的先前值,您可以使用分析功能:

   -- sample of data from your question
   SQL> with t1(CODE, DATE1, VALUE1) as(
      2    select 123, to_date('30/06/2012', 'dd/mm/yyyy'), 11  from dual union all
      3    select 231, to_date('01/07/2012', 'dd/mm/yyyy'), 22  from dual union all
      4    select 321, to_date('02/07/2012', 'dd/mm/yyyy'), 11  from dual union all
      5    select 234, to_date('03/07/2012', 'dd/mm/yyyy'), 11  from dual
      6  )-- the query
      7  select code
      8       , Date1
      9       , Value1
     10       , to_char(value1 / lag(value1, 1) over(order by date1), '999990.0') ret
     11    from t1
     12  ;
结果:

      CODE DATE1           VALUE1      RET
---------- -----------   ----------   ---------
       123 30/06/2012         11 
       231 01/07/2012         22       2.0
       321 02/07/2012         11       0.5
       234 03/07/2012         11       1.0

所以你想除以日期,得出这样做是愚蠢的结论。我们能帮忙吗?谢谢你的回复,我真的很感谢你的帮助。我需要查询查看date列中的日期,然后从该行获取值,并将其除以前几天日期的值。啊,谢谢Nicholas。我不知道lag函数(对SQL来说是非常新的),谢谢它!