1

CRMシステムとWebダウンロードサービスがあります。Webダウンロードで、顧客は顧客名で識別します。crmシステムではcrmID、識別子として持っています。Web顧客名をにマップするためにcrmID、マッピングテーブルがあります。一部の顧客は毎回異なる方法で顧客名を書く傾向があるため、多くのWeb名が同じにリンクしている可能性があり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 に答える