If you need functions, I think that you can declare three functions. For example:
create or alter function dbo.CalculateAccount
(
@Account varchar(max),
@Off_Accnt varchar(max)
)
returns int
begin
return case when @Off_Accnt like '[45]%' then left(@Off_Accnt, 6) else left(@Account, 6) end
end
go
create or alter function dbo.CalculateCat_1
(
@Cat_1 varchar(max),
@Off_Accnt varchar(max),
@Off_Cat_1 varchar(max)
)
returns int
begin
return case when @Off_Accnt like '[45]%' then left(@Off_Cat_1, 7) else left(@Cat_1, 7) end
end
go
create or alter function dbo.CalculateAmount
(
@Off_Accnt varchar(max),
@Amount money
)
returns money
begin
return case when @Off_Accnt like '[45]%' then -@Amount else @Amount end
end
go
Usage:
select
dbo.CalculateAccount( Account, Off_Accnt),
dbo.CalculateCat_1( Cat_1, Off_Accnt, Off_Cat_1),
dbo.CalculateAmount( Off_Accnt, Amount)
from MyTable