我有一个表(称之为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