我有一个CRM系统和一个网络下载服务。在网络下载中,客户识别出客户名称。在crm系统中,我有crmID
作为标识符。要将Web客户名称映射到crmID
,我有一个映射表。由于一些客户倾向于每次都以不同的方式编写客户名称,因此许多网络名称可能会链接到同一crmID
。链接系统始终保持同步,没问题。
crmMap( webName VACHAR(100),
crmID CHAR(6) )
webDownload( webName VARCHAR(100),
item VARCHAR(100),
itemVersion VARCHAR(100),
downloadTime DATETIME )
我想要的是显示每个客户(crmMap.crmID
)上次下载的(webDownload.item and webDownload.itemVersion)
以及发生的时间(webDownload.downloadTime)
。
答案 0 :(得分:1)
您可以使用row_number()
来确定:
select m.crnId, d.item, d.itemVersion, d.downloadTime
from crmMap m
inner join
(
select webname, item, itemVersion, downloadTime,
row_number() over(partition by webname order by downloadTime desc) rn
from webDownload
) d
on m.webName = d.webName
where rn = 1
甚至子查询:
select m.crnId, d.item, d.itemVersion, d.maxTime
from crmMap m
inner join
(
select max(downloadTime) maxTime, webName, item, itemVersion
from webDownload
group by webName, item, itemVersion
) d
on m.webName = d.webName
编辑,如果您只想要MAX()
下载时间,那么您将需要使用:
select m.crnId, m.item, m.itemVersion, m.maxTime
from crmMap m
inner join
(
select max(downloadTime) maxTime
from webDownload
) d
on m.downloadTime = d.webName