2013-06-03 130 views
0

我希望你能幫助我解決這個問題。我知道這個標題有點混亂,所以讓我澄清一下。比方說,我有行"ORDER ID""ORDER #""CODE""DATE""ORDERS"如何在檢索一個值之後從列中檢索值

比方說訂單可以有足夠的代碼以相同的順序(因此該表將加入另一種,但根本不相關的時刻)並在任何特定的時間。

如果我想檢索具有相同「代碼」的ORDER#行,並且在第一個「代碼」之間,100小時後不應該有另一個「代碼」。但是,我還希望在100小時後可以獲得第一個「CODE」。

我不是在尋找確切的答案。我主要看是否有這樣做的方法。它可以用表的多個實例完成嗎?那麼這個邏輯怎麼能被實現呢?

謝謝!

+3

你能舉一個你的數據是什麼樣子的樣本來幫助我們更好地理解你在問什麼嗎? –

+0

雖然我不完全清楚你在問什麼,但也許看看[FIRST/LAST](http://psoug.org/definition/LAST.htm)會有幫助嗎? –

回答

0

我想你想要什麼lag()功能:

select t.* 
from (select t.*, 
      lag(date) over (partition by order#, code order by date) as prevdate 
     from t 
    ) t 
where date - prevdate >= 100/24.0 or prevdate is null; 

這都取order#code組合之前的日期。然後它會選擇距前一個100小時以上的行,並使用相同的order#code