2012-04-19 98 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