this way..
declare @AfterPoint varchar(3);
set @Afterpoint=2;
declare @val numeric(18,9);
set @val=1234.89535656;
declare @SQLQuery varchar(max);
Set @SQLQuery = 'select cast(' + convert(varchar(100), @val) + ' as numeric(18,' + @AfterPoint + '))';
exec(@SQLQuery);
other solution for
tabular format
declare @val numeric(18,9);
set @val=1234.89535656;
declare @a varchar(max);
set @a='';
with a as
(
select 'NUM' as ftype, '2' as Afterpoint
union all
select 'NUM' as ftype, '3' as Afterpoint
union all
select 'NUM' as ftype, '4' as Afterpoint
)
select @a = @a + ' select ' + Afterpoint + ' as Afterpoint,convert(varchar(100),CAST(' + convert(varchar(100), @val) + ' AS NUMERIC(18,'+ Afterpoint + '))) as FormattedVal' + ' union all '
from a
select @a=substring(@a,1,len(@a)-10);
exec(@a);
Happy Coding!
:)