我有如下表:SQL查询,在一个特定的顺序happend事件
+--------+-------+------+--+
| Object | Event | Time | |
+--------+-------+------+--+
| Obj1 | A | 1 | |
| Obj1 | B | 3 | |
| Obj2 | A | 7 | |
| Obj2 | B | 4 | |
+--------+-------+------+--+
我的目标是让所有对象均得了事件A & B带的是一个首先发生的条件(在时间)。到目前为止,我只是想出了查询,发现我有一个& B,不含包括时间的所有对象:
SELECT DISTINCT Object
FROM
(SELECT *
FROM
(SELECT *
FROM table
INNER JOIN
(SELECT Object Obj
FROM table
WHERE event LIKE '%A%' AS temp_table) ON table.Object = temp_table.Obj) AS temp_final
WHERE event LIKE '%B%') AS temp2;
所以,最终的结果将是,我只得到了包括表:
Obj1
由于这是满足所有标准的唯一对象。
时间列是现实生活中的日期标记,但为了简单起见,我使用了整数。
感谢大家的帮助
我使用Vertica的。我知道有这样的功能,如LAG和LEAD,但我想看看是否有一个通用的方法。另外我还没有100%如何使用LAG和铅为我的情况:) – valenzio