2012-04-19 4 views
0

次のクエリを使用して、5つの異なるスキャン名の最新のスキャン日を取得しますが、返されるデータには1つのスキャン名の最新の日付が表示されます。SQLクエリの最新のスキャン日

クエリでは、スキャン名「fisma-mgmt」の4/18/12である最新のスキャン日が返されます。残りの4つのスキャン日付は4/17/12に表示されません。この結果を引き起こす原因は誰にも見えますか?

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