我有一张如下表格。
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(反之亦然)。 有可能只有像id 009那样的triggerX(没有triggerY)。 但是,没有机会只触发。
我想做的是跟随。
例如id 001,我想将triggerX关键字列和triggerY val列合并为一行。
例如id 010.它有四个事件,但我只需要最后两个事件(last triggerX和Y)和merge关键字列和val列。这将在下面给我。
date id keyword val
2017-08-01 001 abc 3
2017-08-01 010 ghi 1
你能帮我弄清楚如何构造SQL以获得如上所示的结果吗?
答案 0 :(得分: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;