我有2个表client_headquarter&客户端
client_headquarter: ID
客户端: id,headquarterid,clentname,tscreated
我想显示所有总部,并且每个总部都会显示“最近的”客户端(ts_created),如果它存在,则显示其中的空白。我希望所有这些都按照没有客户端,老客户端和底层最新客户端的总部进行排序。
有人可以协助查询吗?
答案 0 :(得分:3)
SELECT client_headquarter.id, max(clients.tscreated)
FROM client_headquarter
LEFT OUTER JOIN clients ON clients.headquarterid = client_headquarter.id
GROUP BY client_headquarter.id
ORDER BY MAX(clients.tscreated) ASC
答案 1 :(得分:0)
像...这样的东西。
> select chq.id, count(clientname), max(tscreated) from clients c
> left outer join client_headquarter chq on c.hearquarterid = chq.id
> group by chq.id
> order by count(clientname) DESC, max(tscreated) DESC
答案 2 :(得分:0)
select
ch.id as [Headquarter ID],
c.clientname as [Most Recent Client Name],
c.tscreated as [Date Created]
from
client_headquarter ch
left join
(select
headquarterid,
max(tscreated)
from
clients
group by
headquarterid
) recent on recent.headquarterid = ch.id
left join clients c on c.headquarterid = ch.headquarterid and c.tscreated = recent.tscreated
order by
c.tscreated
如果多个客户具有相同的创建日期,这将为单个总部创建多个行。如果这是不可取的,那么必须定义和实施一些区分胜利者的明确方法。