我有下面的查询,它查看一个数据表,其中每一行都有一个 ID、日期/时间和关键操作(以及其他数据)。此表无法更改且不受我控制。
查询发现 Create 操作(始终是第一个)的出现,提取 ID 和 Date/Time for Creation,然后在一行中提取其他关键操作(Add Info、Book Appt、Accept)的 Date/Time数据:
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
这很好用。
但是,如果查询发现 2 个相同类型的事件,即同一 ID 的“Book Appt”,有时会发生这种情况,它会为该 ID 提取两行数据。所以我得到:
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
我需要它忽略第二次出现,每个 ID 只返回一行。或者,更好地返回显示 Bookap Date1 和 Bookap Date2 的行。
有任何想法吗?