Если вам нужна одна строка для каждого идентификатора, тогда используйте group by
:
select id,
(case when min(result) = max(result) then 'Passed'
else 'Failed'
end) as flag
from t
group by id;
Если вам нужно значение всех строк вашей исходной таблицы, тогда это просто:
select id,
(case when not exists (select 1
from t t2
where t2.result) = t.result
)
then 'Passed' else 'Failed'
end) as flag
from t
group by id;
Однако поставить результат на одну строку проблематично.Нет возможности различить строки, поэтому это более сложно (не невозможно, но я подозреваю, что одно из вышеперечисленного решает вашу реальную проблему).