1

我有一张如下表。

date         id    event      keyword   val     pattern_id()
2017-08-01   001   triggerX   abc       (null)  1
2017-08-01   001   triggerY   (null)     3      1
2017-08-01   009   triggerX   cde       (null)  2
2017-08-01   010   triggerX   ghi       (null)  3
2017-08-01   010   triggerX   ghi       (null)  3
2017-08-01   010   triggerX   ghi       (null)  3
2017-08-01   010   triggerY   (null)     1      3
(list continues..)

事件 triggerX 将跟随 triggerY(反之亦然)。有可能只有 triggerX(没有 triggerY),如 id 009。但是,没有机会仅 triggerY。

我想做的是跟随。

例如 id 001,我想将 triggerX 关键字列和 triggerY val 列合并为一行。

例如 id 010。它有四个事件,但我只需要最后两个事件(最后一个 triggerX 和 Y)并合并关键字列和 val 列。那将在下面给我。

date        id   keyword   val
2017-08-01  001  abc       3
2017-08-01  010  ghi       1

您能帮我弄清楚如何构造 SQL 以获得上述结果吗?

4

1 回答 1

1

我认为这可以满足您的要求:

select date_id, id, max(event), max(keyword)
from t
where keyword in ('triggerX', 'triggerY')
group by date_id, id
having count(distinct keyword) = 2;
于 2017-08-21T19:58:26.343 回答