我有一個表(稱之爲OBJ_EVENTS
)是這樣的:如何從內部查詢中選擇第一條記錄?
EVENT_ID OBJ_ID EVENT_DATE EVENT_TYPE
500 1 10/10/2010 FOO
497 1 01/05/2011 BAR
714 1 01/06/2011 BAZ
1700 2 01/01/2012 FOO
57 2 08/09/2012 BAR
12 2 08/10/2010 BAZ
重要提示 - 我EVENT_ID
列沒有下令
而且我想執行一個SQL查詢來顯示時間這樣FOO事件和巴事件之間的區別:
OBJ_ID FOO_TIME BAR_TIME
1 10/10/2010 01/05/2011
2 01/01/2012 08/09/2012
當我最初寫這個查詢,我EVENT_ID
受命,所以我做了這樣的事情:
SELECT E1.OBJ_ID,
E1.EVENT_DATE AS FOO_TIME,
E2.EVENT_DATE AS BAR_TIME
FROM OBJ_EVENTS E1
JOIN OBJ_EVENTS E2
ON (E2.EVENT_ID = (SELECT MIN(EVENT_ID)
FROM OBJ_EVENTS E3
WHERE E3.OBJ_ID = E1.OBJ_ID
AND E3.EVENT_DATE >= E1.EVENT_DATE
AND E3.EVENT_TYPE = 'BAR'))
然而,由於其他項目的限制,我不會進入,我EVENT_ID
不再按年代順序排列,因此該查詢不起作用。我也嘗試了order by E3.EVENT_DATE
並選擇row_number()= 1的位置,但這也不起作用。 Oracle引發錯誤。
幫助!!!
你可以做一個分(E3.EVENT_DATE) – 2014-11-03 18:08:11