Хорошо, так что это немного странно, но может быть круто.Он избавляется от вашего вложенного регистра и использует некоторые побитовые операции ...
update table1.dbo.totals
set @FEE = COALESCE((g.SGROUPS^1)&1,0) * @GROUPPRICE *
case
when CHARINDEX('JMCG', g.GROUPS) > 0 then (g.SGROUPS - 2)
else (g.SGROUPS - 1)
end
from @GROUPMEM as g
if @FEE < 0
begin
set @GROUPFEE = 0
end
Вы, вероятно, спрашиваете, что делает (g.SGROUPS^1)&1
... Это в основном конвертирует g.SGROUPS водин, если он имеет значение, что позволяет нам использовать его в умножении.