我有一个表,每28天记录一个模式中的所有表的记录计数。该表具有下述列: “TABLE_NAME” VARCHAR2(100 BYTE), “RECORD_COUNT” NUMBER, “创建”日期选择28天之间的记录计数差异
我想卷轴出来,其具有以下数据的日志文件:
- 表名
- 当前记录数
- 记录计数28天前
- 差异between2和3
感谢您的帮助。
我有一个表,每28天记录一个模式中的所有表的记录计数。该表具有下述列: “TABLE_NAME” VARCHAR2(100 BYTE), “RECORD_COUNT” NUMBER, “创建”日期选择28天之间的记录计数差异
我想卷轴出来,其具有以下数据的日志文件:
感谢您的帮助。
像这样的事情应该去做
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
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
);
Danimal,也有显示的结果了零的纪录。我的表格有:Record1-Table1,580,23-JAN-12,Record2-Table1,580,20-FEB-12。您的查询返回:Record1-Table1,580,(null),(null)\t \t Record2-Table1,580,580,0 – Ram 2012-02-21 00:31:06
啊,是的,我忘了按表名分区。好答案。 – 2012-02-20 23:52:49
贾斯汀我得到一个错误:ORA-00923:FROM关键字未找到预期 00923. 00000 - “FROM关键字未找到预期” *原因: *动作: 行错误:28列:1 – Ram 2012-02-21 00:54:16
我做一些小的编辑和现在的工作。 SELECT TABLE_NAME, record_count, prior_record_count, record_count - prior_record_count DIFF FROM(SELECT TABLE_NAME, record_count, 滞后(record_count)以上(分区由TABLE_NAME为了通过创建)prior_record_count, 秩()以上(分区由TABLE_NAME为了通过创建)rnk FROM TABLE1) WHERE rnk = 2 – Ram 2012-02-21 01:00:34