Используйте apply
с case
выражениями:
select v.agent, t.policy_ref, t.transaction_type, v.score
from #temptable t cross apply
(values (opener, (case when t.opener = t.closer then 1.0 else 0.5 end)),
(case when t.opener <> t.closer then t.closer end, 0.5)
) v(agent, score)
where v.agent is not null;
Или:
select v.agent, t.policy_ref, t.transaction_type,
(case when t.opener = t.closer then 1.0 else 0.5 end) as score
from #temptable t cross apply
(values (t.opener, 1),
(t.closer, 2)
) v(agent, which)
where (t.opener <> t.closer) or (which = 1)
Это не плагин, но Исходный Монитор из http://www.campwoodsw.com/ является большим свободным метрическим инструментом.