Try this:
Select Top 1000000
tblAssets.AssetID,
tblAssets.AssetName,
tblAssets.Username,
tblAssetCustom.Custom2,
tblAssetCustom.Custom3,
tblAssets.IPAddress,
tblAssets.Firstseen,
tblAssets.Lastseen,
tsysOS.Image As icon,
MaxMonitorHist.MonitorManufacturer,
MaxMonitorHist.MonitorModel,
MaxMonitorHist.SerialNumber,
MaxMonitorHist.LastAdded
From
tblAssets
INNER JOIN (SELECT
tblMonitorHist.AssetID,
tblMonitorHist.MonitorManufacturer,
tblMonitorHist.MonitorModel,
tblMonitorHist.SerialNumber,
Max(tblMonitorHist.LastChanged) AS LastAdded
FROM
tblMonitorHist
WHERE
tblMonitorHist.Action = 1 -- added
AND tblMonitorHist.LastChanged >= Cast('03-15-2020' As DATETIME)
GROUP BY
tblMonitorHist.AssetID,
tblMonitorHist.MonitorManufacturer,
tblMonitorHist.MonitorModel,
tblMonitorHist.SerialNumber ) AS MaxMonitorHist ON MaxMonitorHist.AssetID = tblAssets.AssetID
Inner Join tblAssetCustom On tblAssets.AssetID = tblAssetCustom.AssetID
Inner Join tsysOS On tsysOS.OScode = tblAssets.OScode
Where
tblAssetCustom.State = 1
And (tblAssets.IPAddress Like '10.15.%' Or tblAssets.IPAddress Like '10.95.%')
Order By
tblAssets.AssetName
The inner SELECT is pulling a list of the last time any given monitor was connected to an asset on or after 2020-03-15. I believe I got the logic right, but always double-check.