0

一意ではないリードを含むテーブルがあり、これをグループ化して、一意の最新 (列date) のリードを含める必要があります。

id      lead_id status  date
-----   ------  --      -------------------
26199   666842  Ok      2013-06-19 12:00:09

56199   376842  Ok      2013-06-19 12:00:09
58322   376842  Ok      2013-06-21 12:11:59
60357   376842  Ok      2013-06-24 12:22:00
61431   376842  Ok      2013-06-25 12:18:02
62365   376842  Ok      2013-06-26 12:16:04
63202   376842  Ok      2013-06-27 12:14:08
63983   376842  Er      2013-06-28 12:12:06

26199したがって、上記の例では、結果として 2 つのリードが必要63983です。MAX(date)GROUP BY

左結合、最大およびグループ集計を試しましたが、何が間違っているのかわかりません。

SELECT a.lead_id, MAX(a.created) AS created FROM RawLead a LEFT JOIN RawLead b ON b.created = a.created GROUP BY a.lead_id

残念ながら、ビューに表示する必要があるため、サブクエリを使用できません。

4

1 に答える 1

3

サブクエリなし:)

select
l1.*
from
lead l1
left join lead l2 on l1.date < l2.date and l1.lead_id = l2.lead_id
where l2.id is null 

sqlfiddleでライブで動作することを確認してください。

LEFT JOIN は、l1.date が最大値の場合、それより大きい値の l2.date はなく、l2 行の値が NULL になることに基づいて機能します。

于 2013-07-25T09:28:21.810 に答える