You want to reference the software twice -- once to display the installed status, once on the filter -- so I would suggest that you take a slightly different tack: set up your connections once, then reference those connections.
SELECT TOP 1000000
tblAssets.AssetID,
tblAssets.AssetName,
CASE
WHEN Soft01.AssetID IS NOT NULL
THEN 'Installed'
ELSE 'Not Installed'
END AS [Desktop Central Agent],
CASE
WHEN Soft02.AssetID IS NOT NULL
THEN 'Installed'
ELSE 'Not Installed'
END AS [Duo Agent],
CASE
WHEN Soft03.AssetID IS NOT NULL
THEN 'Installed'
ELSE 'Not Installed'
END AS [Nessus Agent],
CASE
WHEN Soft04.AssetID IS NOT NULL
THEN 'Installed'
ELSE 'Not Installed'
END AS [DefenseStorm Agent],
CASE
WHEN Soft05.AssetID IS NOT NULL
THEN 'Installed'
ELSE 'Not Installed'
END AS [LanSweeper Agent],
CASE
WHEN Soft06.AssetID IS NOT NULL
THEN 'Installed'
ELSE 'Not Installed'
END AS [Sophos Endpoint Agent]
FROM
tblAssets
LEFT JOIN (SELECT tblSoftware.AssetID
FROM tblSoftware
INNER JOIN tblSoftwareUni ON tblSoftwareUni.SoftID = tblSoftware.softID
WHERE
tblSoftwareUni.softwareName LIKE '%ManageEngine Desktop Central - Agent%') AS Soft01 ON Soft01.AssetID = tblAssets.AssetID
LEFT JOIN (SELECT tblSoftware.AssetID
FROM tblSoftware
INNER JOIN tblSoftwareUni ON tblSoftwareUni.SoftID = tblSoftware.softID
WHERE
tblSoftwareUni.softwareName LIKE '%Duo Authentication for Windows Logon x64%') AS Soft02 ON Soft02.AssetID = tblAssets.AssetID
LEFT JOIN (SELECT tblSoftware.AssetID
FROM tblSoftware
INNER JOIN tblSoftwareUni ON tblSoftwareUni.SoftID = tblSoftware.softID
WHERE
tblSoftwareUni.softwareName LIKE '%Nessus Agent (x64)%') AS Soft03 ON Soft03.AssetID = tblAssets.AssetID
LEFT JOIN (SELECT tblSoftware.AssetID
FROM tblSoftware
INNER JOIN tblSoftwareUni ON tblSoftwareUni.SoftID = tblSoftware.softID
WHERE
tblSoftwareUni.softwareName LIKE '%DefenseStorm%') AS Soft04 ON Soft04.AssetID = tblAssets.AssetID
LEFT JOIN (SELECT tblSoftware.AssetID
FROM tblSoftware
INNER JOIN tblSoftwareUni ON tblSoftwareUni.SoftID = tblSoftware.softID
WHERE
tblSoftwareUni.softwareName LIKE '%lsagent%') AS Soft05 ON Soft05.AssetID = tblAssets.AssetID
LEFT JOIN (SELECT tblSoftware.AssetID
FROM tblSoftware
INNER JOIN tblSoftwareUni ON tblSoftwareUni.SoftID = tblSoftware.softID
WHERE
tblSoftwareUni.softwareName LIKE '%Sophos Endpoint Agent%') AS Soft06 ON Soft06.AssetID = tblAssets.AssetID
WHERE
tblAssets.Assettype = -1
AND ( Soft01.AssetID IS NULL
OR Soft02.AssetID IS NULL
OR Soft03.AssetID IS NULL
OR Soft04.AssetID IS NULL
OR Soft05.AssetID IS NULL
OR Soft06.AssetID IS NULL)
ORDER BY
tblAssets.AssetName
The LEFT JOINs ensure you don't filter out any of the assets because software isn't installed.
Where each piece of software is installed, you will have an AssetID (e.g. Soft01.AssetID). If that software is not installed, when you try to reference the AssetID, you'll be looking at NULL. You use that to determine whether to display installed/not installed. You also use that to create your filter in the WHERE clause: only include an asset if at least one of the software joins has no AssetID.