Try using a case
statement to convert to ordered results and group on that, finally, you'll need to convert back to the nice, human-readable answer:
with cte1 as (
SELECT HOST,
[statNum] = case
when Status like 'PASS' then 2
when Status like 'FAIL' then 1
else 0
end
FROM table
)
SELECT HOST, case max(statNum) when 2 then 'PASS' when 1 then 'FAIL' else 'No Results' end
FROM cte1
GROUP BY HOST
NOTE: I used a CTE statement to hopefully make things a little clearer, but everything could be done in a single SELECT
, like so:
SELECT HOST,
[Status] = case max(case when Status like 'PASS' then 2 when Status like 'FAIL' then 1 else 0 end)
when 2 then 'PASS'
when 1 then 'FAIL'
else 'No Result'
end
FROM table