以下のクエリを使用して、各行に ID、日付/時刻、およびキー アクション (およびその他のデータ) が含まれるデータのテーブルを調べます。このテーブルは変更できず、私の手に負えません。
クエリは、作成アクション (常に最初のアクション) の発生を検出し、作成の ID と日付/時刻を取得してから、他の主要なアクション (情報の追加、申請の予約、承認) の日付/時刻を 1 行で取得します。データ:
SELECT _create.ID AS ID,
_create.`datetime` AS Create,
_inform.`datetime` AS Add_Info,
_bookap.`datetime` AS Book_Appt,
_accept.`datetime` AS Accept,
FROM table AS _create
LEFT JOIN table AS _inform ON (_create.ID = _inform.ID AND _inform.action = 'Add Info')
LEFT JOIN table AS _bookap ON (_create.ID = _bookap.ID AND _bookap.action = 'Book Appt')
LEFT JOIN table AS _accept ON (_create.ID = _accept.ID AND _accept.action = 'Accept')
WHERE _create.action="Create"
だから私は次のようなものを得る:
ID - Create Date - Inform Date - Bookap Date - Accept Date
1234 01/02/2013 02/02/2013 09/02/2013 10/02/2013
これはうまくいきます。
ただし、クエリが同じ ID の「Book Appt」などの同じタイプの 2 つのイベントを検出した場合 (これは時々発生する可能性があります)、その ID の 2 行のデータを取得します。だから私は得る:
ID - Create Date - Inform Date - Bookap Date - Accept Date
1234 01/02/2013 02/02/2013 09/02/2013 10/02/2013
1234 01/02/2013 02/02/2013 15/02/2013 10/02/2013
2 番目の発生を無視し、ID ごとに 1 行だけを返す必要があります。または、Bookap Date1 と Bookap Date2 を示す行を返すことをお勧めします。
何か案は?