Нельзя добавлять биты в SQL Server, но вы можете добавить бит к числу, и это возвращает число, потому что в SQL Server «бит» - это просто целочисленный тип с допустимыми значениями 0,1.
SELECT CASE ((((0+sub1)+sub2)+sub3)+sub4) WHEN 4 THEN 1 ELSE ((((0+sub1)+sub2)+sub3)+sub4)/2 END as dpa
FROM table
Альтернативный, специфичный для SQL Server способ - явно преобразовать бит в целое число:
SELECT CASE CAST(int,sub1)+CAST(int,sub2)+CAST(int,sub3)+CAST(int,sub4)
WHEN 4 THEN 1 ELSE (CAST(int,sub1)+CAST(int,sub2)+CAST(int,sub3)+CAST(int,sub4))/2 END AS dpa
FROM table
Более стандартная, не специфичная для SQL-сервера (предполагается, что sub1 / 2/3/4 являются логическими типами, поскольку не все механизмы баз данных реализуют бит как тип данных, а целочисленные типы тривиальны):
SELECT CASE
(CASE WHEN sub1 THEN 1 ELSE 0 END)+(CASE WHEN sub2 THEN 1 ELSE 0 END)+(CASE WHEN sub3 THEN 1 ELSE 0 END)+(CASE WHEN sub4 THEN 1 ELSE 0 END)
WHEN 4 THEN 1 ELSE
((CASE WHEN sub1 THEN 1 ELSE 0 END)+(CASE WHEN sub2 THEN 1 ELSE 0 END)+(CASE WHEN sub3 THEN 1 ELSE 0 END)+(CASE WHEN sub4 THEN 1 ELSE 0 END))/2
END AS dpa
FROM table