Try this.
create function dbo.[F_GetPreviousDayAndAmount] (@ID char(5),@InjectedDate datetime)
RETURNS [float]
as
BEGIN
declare @YesterdayAmount float ,@PrevDate datetime
select@PrevDate = max(InjectedDate)
from[dbo].[Transactions]
where[ID] = @ID and
[InjectedDate] < @InjectedDate
if @PrevDate is NULL
select@YesterdayAmount = NULL
else
begin
select@YesterdayAmount = [Amount]
from[dbo].[Transactions]
where[ID] = @ID and
[InjectedDate] = @PrevDate
end
RETURN @YesterdayAmount
END
GO
selecta.ID,a.[InjectedDate],a.[Amount],dbo.[F_GetPreviousDayAndAmount](ID,InjectedDate) 'Yesterday_Amount'
from[dbo].[Transactions] a
order by a.ID,a.InjectedDate