Простым решением является отключение с cross apply
, затем подсчет:
select count(*) no_matches
from mytable t
cross apply (values(preg1), (preg2), (preg3), (preg4)) x(preg)
where x.preg = 'Si'
Обратите внимание, что это также работает, если в вашей таблице более одной строки.
Демонстрация на DB Fiddle :
| no_matches |
| ---------: |
| 3 |