Вы можете просто использовать деление. Если вы не хотите повторять вычисления, используйте apply
:
select t.str_nbr,
t.cash * 100.0 / v.total as cash_pct,
t.planpay * 100.0 / v.total as planpay_pct,
t.govt * 100.0 / v.total as govt_pct
from t cross apply
(values (cash + planpay + govt)) v(total)
Обратите внимание, что SQL Server выполняет целочисленное деление. Итак, если значения являются целыми числами, тогда 1 / 2
будет 0
, а не 0.5
. * 100.0
исправляет это.