2017-08-21 17 views
1

私は以下のようなテーブルを持っています。最後の2つのイベントを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が続きます(その逆もありません)。 id 009のようなトリガーX(トリガーY)しかない可能性があります。 しかし、チャンストリガーYはありません。

私がしたいことは次のとおりです。

たとえばid 001の場合、私は、triggerXキーワード列とtriggerY val列を1つの行にマージしたいと思います。

これは4つのイベントがありますが、最後の2つのイベント(last triggerXとY)とマージするキーワード列とval列が必要です。それは私に下を与えます。

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

上記のような結果を得るためにSQLを構築する方法を理解できたら助かりますか?

+0

私は互換性のないデータベースタグを削除しました。 MySQL <> Vertica実際に使用しているデータベースにタグを付けてください。 –

答えて

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; 
関連する問題