Final working code, with huge thanks to Ken McKelvey:
WITH DeleteTests
AS
(
SELECT *
,MAX(CASE WHEN TestStatus = 'D' THEN 1 ELSE 0 END) OVER (PARTITION BY KitId, StdBatteryName) AS IsD
,MAX(CASE WHEN TestStatus = 'N' THEN 1 ELSE 0 END) OVER (PARTITION BY KitId, StdBatteryName) AS IsN
,MAX(CASE WHEN TestStatus = 'X' THEN 1 ELSE 0 END) OVER (PARTITION BY KitId, StdBatteryName) AS IsX
FROM PRE_LOAD P
WHERE EXISTS
(
SELECT 1
FROM PRE_LOAD P1
WHERE P1.KitId = P.KitId AND P1.StdBatteryName = P.StdBatteryName
GROUP BY KitId, StdBatteryName
HAVING COUNT(DISTINCT StdBatteryId) > 1
)
)
DELETE FROM PL
FROM dbo.PRE_LOAD PL JOIN DeleteTests DT
ON PL.KitID = DT.KitID
AND PL.StdTestID = DT.StdTestID
AND PL.StdBatteryName = DT.StdBatteryName
AND PL.TestStatus = DT.TestStatus
AND (DT.TestStatus = 'N' AND (IsD = 1 OR IsX = 1))
OR (DT.TestStatus = 'X' AND DT.IsD = 1 AND DT.IsN = 0);