我很想知道如何在Oracle中基於返回行列表中的上一行編寫SQL查詢。基本上,我必須查詢我們的數據庫中所有ID爲2460的行,但前一行(按日期排序)的ID號是2463.有沒有辦法做到這一點?Oracle SQL:根據先前行中的值進行選擇列
對不起,如果這是混亂或一個愚蠢的問題,我是非常新的,並不是很擅長這類事情。我很樂意澄清任何需要澄清的事情。
謝謝!
編輯:
下面是我根據戈登與我越來越VS我想要的結果,結果的截圖沿着答案運行查詢。
select *
from (select activitytranledger.*, lag(reasontype) over (order by trandate) as prev_reason from activitytranledger) activitytranledger
where trandate between to_date('02/7/2017','MM/DD/YYYY')
and to_date('02/8/2017','MM/DD/YYYY')
and reasontype = 2460
and prev_reason = 2463
order by trandate
;
然後,我將找到位置#並查詢它的具體日期。
select *
from activitytranledger
where location = 5777
and trandate between to_date('02/7/2017','MM/DD/YYYY')
and to_date('02/8/2017','MM/DD/YYYY')
order by trandate
;
使用「Transid」我可以找到第一個查詢輸出的特定行。但是,它似乎沒有給我想要的結果。
Wanted results(注意行直接與2460「Reasontype」行上面有着怎樣的理由類型2463)
Current results(我強調該行應該有2463的,我指着列)
編輯2:切換2463和2460
編輯您的問題,並提供樣本數據和預期結果。 –