2012-09-25 7 views
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)을 일어 났을 때 무엇을 표시하는 것입니다.

+0

진짜 도전은 최신 downloadTime이있는 항목 만 얻는 것입니다. –

답변

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 

또는 하위 쿼리 : 당신은 단지 MAX() 다운로드 시간을 원하는 경우

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 

편집, 다음 사용할 것

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 
+0

@BluehighMountain 몇 가지 샘플 데이터를 게시 할 수 있습니까? 또는 [SQL Fiddle] (http://sqlfiddle.com/)을 만들 수 있습니까? – Taryn

+0

솔루션은 실제로 내가 원하는 것을 제공하지 않습니다. 위를 참조하십시오. crmID, item, itemVersion의 각 조합에 대한 최신 다운로드 시간을 제공합니다. crmID 당 최신 전체 다운로드 시간이 필요하며 그 당시 crmID에서 다운로드 한 item 및 itemVersion이 필요합니다. –

+0

@BluehighMountain 일부 샘플 데이터와 예상 결과를 게시 할 수 있으면 훨씬 쉬울 것입니다. – Taryn