I have found myself solution to my Question.Ofcourse it's not accurate one but somewhat helps in resolving this kind of Dynamic Query issues in SQL Functions.One more issue with this is SQL Injection security .However,If you are not much bother about high security in your application it helps.
ALTER FUNCTION [dbo].[func_GeTPMonyhlyReport](@pCaseID INT,@Colname char(50))
RETURNS CHAR(50)
AS
BEGIN
DECLARE @DynVal Char(50)
BEGIN
select @DynVal =
case
when @Colname = 'TreatmentProvider' then C.TreatmentProvider
when @Colname = 'MonthlyRptReceived' then ISNULL(Convert(Varchar,B.MonthlyRptReceived,101),'')
else ''
end
FROM tblCase As A INNER JOIN
tblTreatmentProvdrAssignedToCase As D .........
WHERE A.CaseID=@pCaseID order by B.CreateDt Desc
END
RETURN @DynVal
END