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

因此,在上面的示例中,我应该有两个潜在客户:id2619963983因为它们都是MAX(date)同时是GROUP BYlead_id 的。

我尝试了左连接、最大值和组聚合,不知道我做错了什么。

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 回答