CREATE TABLE players (
    PlayerID int,
    UserName varchar(255),
    Country varchar(255),
    FirstName varchar(255),
    LastName varchar(255)
);

CREATE TABLE deposits (
    DepID int,
    PlayerID int,
    DepDate varchar(255),
    Method varchar(255),
    Amount int
);

INSERT INTO players
VALUES 
(101, 'poker_poker', 'GB', 'Richard', 'Bull'),
(102, 'CheckRaiser', 'RU', 'Naomi', 'Smyth'),
(103, 'Cadillac', 'IT', 'Mark', 'Redman'),
(104, 'IMALLIN', 'GB', 'Caroline', 'Martin'),
(105, 'itisproblem', 'GB', 'Caroline', 'Mates'),
(106, 'TOPTOP', 'RU', 'Robert', 'Yerigan'),
(107, 'MikeyMcD', 'GB', 'Gareth', 'Robbins');

INSERT INTO deposits
VALUES 
(101, 103, '1/1/2017', 'Cheque', 200),
(102, 101, '1/1/2017', 'Card', 100),
(103, 102, '1/2/2017', 'Wallet', 500),
(104, 104, '1/2/2017', 'Card', 50),
(105, 103, '1/2/2017', 'Card', 100),
(106, 105, '1/2/2017', 'Cheque', 65),
(107, 102, '1/3/2017', 'Card', 100),
(108, 103, '1/3/2017', 'Wallet', 75);

SELECT p.UserName, d.Method, d.DepDate,  d.Amount
FROM players p
LEFT OUTER JOIN deposits d on d.PlayerID = p.PlayerID
LEFT OUTER JOIN (SELECT PlayerID, MAX(DepDate) maxDate FROM deposits GROUP BY 1) md 
on md.PlayerID = d.PlayerID AND md.maxDate = d.DepDate
GROUP BY 1
ORDER BY 3 DESC;