Universal report:
Select Top 1000000 tblAssets.AssetID,
tblAssets.AssetName,
tblAssets.oscode,
tblVideoController.caption,
tblVideoController.driverversion As Version,
b.LatestVersion As [Highest Version Detected],
tblVideoController.Lastchanged,
tblAssets.Lastseen
From tblAssets
Inner Join tblVideoController On
tblAssets.AssetID = tblVideoController.AssetID
Inner Join (Select __.caption,
__.Major,
__.Minor,
__.Build,
__.Revision,
LatestVersion = __.driverversion
From (Select *,
r = Row_Number() Over (Partition By _.Caption Order By _.Major Desc,
_.Minor Desc, _.Build Desc, _.Revision Desc)
From (Select Distinct tblVideoController.caption,
Major = Convert(int,ParseName(tblVideoController.driverversion,
4)),
Minor = Convert(int,ParseName(tblVideoController.driverversion,
3)),
Build = Convert(int,ParseName(tblVideoController.driverversion,
2)),
Revision = Convert(int,ParseName(tblVideoController.driverversion,
1)),
tblVideoController.driverversion
From tblVideoController
Where tblVideoController.adapterram > 0 And
IsNumeric(Replace(tblVideoController.driverversion, '.',
'')) = 1) _) __
Where __.r = 1) b On tblVideoController.driverversion <> b.LatestVersion And
tblVideoController.Caption = b.caption