2012-04-19 157 views
0

我正在使用以下查詢爲5個不同的掃描名稱提取最近的掃描日期,但正在返回的數據僅顯示一個掃描名稱的最近日期。SQL查詢最近的掃描日期

該查詢僅返回最近的掃描日期,即掃描名稱'fisma-mgmt'的4/18/12。在4/17/12的其他4個掃描日期不顯示。任何人都可以看到會導致這個結果嗎?

SELECT 
ScanName, 
ScanDate, 
pspplMSSeverity, 
PatchMissing 

FROM 
(
SELECT 
ScanName, 
ScanDate, 
pspplMSSeverity, 
PatchMissing, 

DENSE_RANK() OVER (ORDER BY ScanDate DESC) AS Rnk 

FROM qryReportsPatchDeploymentPctbyPatch 

where (ScanName like '%fisma-front%' 
OR ScanName like '%fisma-back%' 
OR ScanName like '%fisma-app%' 
OR ScanName like '%fisma-meps%' 
OR ScanName like '%fisma-mgmt%') 


)t 
WHERE rnk=1 

回答

1

哦,在窗口功能,你需要一個分區子句:

DENSE_RANK() OVER (PARTITION BY ScanName ORDER BY ScanDate DESC) AS Rnk 

書面,查詢只返回最近一次掃描的整體,而不是最近一次掃描的每一個名字。

+0

工作完美,謝謝。 – Ben 2012-04-19 15:37:47