• 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