我有一個表,每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