1

我有一个 CRM 系统和一个网络下载服务。在网络下载中,客户使用客户名称进行识别。在 crm 系统中,我有crmID作为标识符。要将网络客户名称映射到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)

4

1 回答 1

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
于 2012-09-25T10:23:04.830 回答