【发布时间】:2012-03-11 07:31:57
【问题描述】:
我有一个表,它每 28 天记录一次模式中所有表的记录计数。该表具有以下列: "TABLE_NAME" VARCHAR2(100 字节), “RECORD_COUNT”个, “创建”日期
我想提取一个包含以下数据的日志文件:
- 表名
- 当前记录数
- 28 天前的记录计数
- 2 和 3 的区别
感谢您的帮助。
【问题讨论】:
标签: oracle
我有一个表,它每 28 天记录一次模式中所有表的记录计数。该表具有以下列: "TABLE_NAME" VARCHAR2(100 字节), “RECORD_COUNT”个, “创建”日期
我想提取一个包含以下数据的日志文件:
感谢您的帮助。
【问题讨论】:
标签: oracle
Oracle 的 LAG 功能应该可以满足您的需求。它是一个分析函数,从前一行返回数据。以下应该有效:
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
【讨论】: