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
Oracle 选择28天之间记录计数的差异_Oracle - Fatal编程技术网

Oracle 选择28天之间记录计数的差异

Oracle 选择28天之间记录计数的差异,oracle,Oracle,我有一个表,每28天记录一个模式中所有表的记录计数。该表包含以下列: 表_NAME VARCHAR2100字节, 记录计数编号, 创建日期 我想输出一个包含以下数据的日志文件: 表名 当前记录计数 28天前的记录 2和3之间的差异 感谢您的帮助。Oracle的滞后功能应该能满足您的需要。它是一个分析函数,返回前一行的数据。以下方面应起作用: select table_name, record_count, prev_record_count, record_cou

我有一个表,每28天记录一个模式中所有表的记录计数。该表包含以下列: 表_NAME VARCHAR2100字节, 记录计数编号, 创建日期

我想输出一个包含以下数据的日志文件:

表名 当前记录计数 28天前的记录 2和3之间的差异
感谢您的帮助。

Oracle的滞后功能应该能满足您的需要。它是一个分析函数,返回前一行的数据。以下方面应起作用:

select
    table_name,
    record_count,
    prev_record_count,
    record_count - nvl(previous_record_count, 0) as difference
from (
    select
       table_name,
        record_count,
        lag(record_count) over (order by created) as prev_record_count
    from
        log_table
);

像这样的东西应该可以

SELECT table_name,
       record_count,
       prior_record_count,
       record_count - prior_record_count diff
  FROM (SELECT table_name,
               record_count,
               lag(record_count) 
                  over (partition by table_name
                            order by created) prior_record_count,
               rank() 
                 over (partition by table_name
                           order by created) rnk
           FROM <<name of table>>)
 WHERE rnk = 1

啊,是的,我忘了按表名进行分区。回答得好。贾斯汀我收到一个错误:ORA-00923:FROM关键字未找到预期的00923。00000-未在预期的位置找到FROM关键字*原因:*操作:第28行列处出错:1I进行了一些小的编辑,现在正在运行。选择表名称、记录计数、前一个记录计数、记录计数-前一个记录计数与选择表名称、记录计数、按表名称划分的滞后记录计数之间的差异按创建的前一个记录计数的顺序,根据表1中创建的rnk按表\u名称顺序在分区上排序,其中rnk=2@Ram-很抱歉,我在子查询中漏掉了一个逗号。更新了我的答案。Danimal,结果中还显示了一条空记录。我的表格有:Record1-Table1580,2012年1月23日,Record2-Table1580,2012年2月20日。您的查询返回:Record1-table1580,null,null Record2-table1580580,0