did you try this
select Sum(case duration when 'Half Day' then '.5' when 'Full Day' then '1' when '"Hour*"' then dbo.GetNumbers(duration) else dbo.GetNumbers(duration) end) as DURATION from tbl_leave
other wise use this
select sum(cast(duration as float)) from (
select case duration when 'Half Day' then '.5' when 'Full Day' then '1' when '"Hour*"' then dbo.GetNumbers(duration) else dbo.GetNumbers(duration) end as DURATION from tbl_leave) as LeaveDuration
both of these should work.
--Pankaj