• It's  all good I cracked  the joins, just had to repeat the joins twice as such...

    WITH Base AS (
    SELECT
      CSM.[First name]
     ,PP.[Fname]
     ,CSM.[Last name]
     ,PP.[Lname]
     ,[l].[ProfileId]
      , [l].[Date]
      , [l].[Paid]
      , [rn] = ROW_NUMBER() OVER (PARTITION BY [l].[ProfileId] ORDER BY [l].[Date] DESC)
    FROM
      [dbo].[Ledger] AS [l]
     Inner Join personalprofiles PP
    ON
    L.ProfileId = PP.ID
    Inner Join CurrentStudentMembership As CSM
    on
    CSM.[First name] = PP.[Fname]
    And CSM.[Last name] = PP.[Lname]
    Where [l].[Paid] > 0
    )
    SELECT
     CSM.[First name]
     ,PP.[Fname]
     ,CSM.[Last name]
     ,PP.[Lname]
    .[ProfileId]
      , .[Date]
      , .[Paid]
    FROM
      [base] AS
     Inner Join  Ledger L
     on .[ProfileId] = L.[ProfileId]
      Inner Join personalprofiles PP
     ON
    L.ProfileId = PP.ID
    Inner Join CurrentStudentMembership As CSM
    on
    CSM.[First name] = PP.[Fname]
    And CSM.[Last name] = PP.[Lname]
    Where [l].[Paid] > 0
    and .[rn] = 1;