我使用以下查询来提取5个不同扫描名称的最新扫描日期,但是返回的数据只显示了1个扫描名称的最新日期。
查询只返回最近的扫描日期,扫描名称为'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
答案 0 :(得分:1)
哦,在windows函数中,你需要一个分区子句:
DENSE_RANK() OVER (PARTITION BY ScanName ORDER BY ScanDate DESC) AS Rnk
如上所述,查询仅返回最新的扫描结果,而不是每个名称的最新扫描。