0
有問題我有表call_detail
與以下列phone_no
,call_id
,call_date
。我想創建一個視圖,每行都有一個視圖,以及每個記錄上的前一個調用。我怎樣才能做到這一點?在使用Oracle秩函數
我已經嘗試使用排名與自我加入表call_detail
,但只給了我從表中的最新記錄。
有問題我有表call_detail
與以下列phone_no
,call_id
,call_date
。我想創建一個視圖,每行都有一個視圖,以及每個記錄上的前一個調用。我怎樣才能做到這一點?在使用Oracle秩函數
我已經嘗試使用排名與自我加入表call_detail
,但只給了我從表中的最新記錄。
我不確定你在做什麼lag()
但它聽起來不對。聽起來好像你在做什麼; from the documentation:
LAG
是一個分析函數。它可以同時訪問多個表中的一行,而無需自行加入。
您希望以前撥打每個電話號碼,因此您需要按phone_no
進行分區,並按call_date
進行排序。這顯示了所有三個字段的前值:
select phone_no, call_id, call_date,
lag(phone_no) over (partition by phone_no order by call_date)
as prev_phone_no,
lag(call_id) over (partition by phone_no order by call_date)
as prev_call_id,
lag(call_date) over (partition by phone_no order by call_date)
as prev_call_date
from call_detail
order by call_date;
與你評論給了樣本數據這給:
PHONE_NO CALL_ID CALL_DATE PREV_PHONE_NO PREV_CALL_ID PREV_CALL_DATE
-------------- ---------- ------------------- -------------- ------------ -------------------
234534534 4 2013-01-11 20:11:03
234534534 6 2013-01-11 20:11:03 234534534 4 2013-01-11 20:11:03
234556777 2 2013-01-11 20:11:03
234543453 7 2013-01-12 15:11:03
234543453 5 2013-01-12 16:11:03 234543453 7 2013-01-12 15:11:03
234543453 3 2013-01-12 18:11:03 234543453 5 2013-01-12 16:11:03
234543453 1 2013-01-12 20:11:03 234543453 3 2013-01-12 18:11:03
,你可以用它來創建一個視圖(沒有order by
子句,只有你想要的列)。
使用LAG分析功能。 – San
LAG不會在這裏工作,因爲它會給我以前確切的日期輸入,而不考慮電話號碼。 – user3178723
LAG不會在這裏工作,因爲它會給我確切的以前的日期輸入,而不考慮電話號碼。 phone_no call_id call_date 234543453 1 1-12-2013 8:11:03 PM 234556777 2 1-11-2013 8:11:03 PM 234543453 3 1-12-2013 6:11:03 PM 234534534 4 1- 11-2013 8:11:03 PM 234543453 5 1-12-2013 4:11:03 PM 234534534 6 1-11-2013 8:11:03 PM 234543453 7 1-12-2013 3:11:03 PM 現在,如果我想獲得電話號碼的前一個電話號碼,並且當前的電話ID也將LAG工作在這裏 – user3178723