Report for Windows:
Select Top 1000000 tblAssets.assetid,
tblAssets.Domain,
tblAssets.AssetName,
tblAssets.OScode,
tblAssets.Userdomain,
tblAssets.Username,
tblSoftwareUni.SoftwarePublisher,
tblSoftwareUni.softwareName,
tblsoftwareHist.softwareVersion,
Max(tblsoftwareHist.Lastchanged) max_lastchanged,
Case tblsoftwareHist.Action
When 1 Then 'Added'
When 2 Then 'Removed'
When 3 Then 'Updated'
End As Action
From tblsoftwareHist
Inner Join tblSoftwareUni On tblSoftwareUni.SoftID = tblsoftwareHist.softid
Inner Join tblAssets On tblAssets.AssetID = tblsoftwareHist.AssetID And
tblsoftwareHist.Action = 2
Left Join tblsoftware t On t.assetid = tblsoftwareHist.assetid And
t.softid = tblsoftwareHist.softid
Where t.AssetID Is Null And tblsoftwareHist.Lastchanged > GetDate() - 30
Group By tblAssets.assetid,
tblAssets.Domain,
tblAssets.AssetName,
tblAssets.OScode,
tblAssets.Userdomain,
tblAssets.Username,
tblSoftwareUni.SoftwarePublisher,
tblSoftwareUni.softwareName,
tblsoftwareHist.softwareVersion,
tblsoftwareHist.Action
Order By max_lastchanged Desc