Or, very similar to (and slightly slower than) JR's solution...
DROP TABLE IF EXISTS my_table;
CREATE TABLE my_table
(Column1 INT NOT NULL
,Column2 CHAR(1) NOT NULL
,PRIMARY KEY(Column1,Column2)
);
INSERT INTO my_table VALUES
(1 ,'A'),
(1 ,'B'),
(1 ,'C'),
(2 ,'D'),
(2 ,'A'),
(2 ,'B'),
(2 ,'E'),
(2 ,'F'),
(3 ,'A'),
(3 ,'D'),
(3 ,'C'),
(3 ,'H'),
(3 ,'J');
SELECT column1
, MAX(CASE WHEN rank = 1 THEN column2 END) n1
, MAX(CASE WHEN rank = 2 THEN column2 END) n2
, MAX(CASE WHEN rank = 3 THEN column2 END) n3
, MAX(CASE WHEN rank = 4 THEN column2 END) n4
, MAX(CASE WHEN rank = 5 THEN column2 END) n5
FROM
( SELECT x.*
, COUNT(*) rank
FROM my_table x
JOIN my_table y
ON y.column1 = x.column1
AND y.column2 <= x.column2
GROUP
BY x.column1
, x.column2
) n
GROUP
BY column1;
+---------+------+------+------+------+------+
| column1 | n1 | n2 | n3 | n4 | n5 |
+---------+------+------+------+------+------+
| 1 | A | B | C | NULL | NULL |
| 2 | A | B | D | E | F |
| 3 | A | C | D | H | J |
+---------+------+------+------+------+------+