By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
Create Table table_name(contractID INT, customergroup VARCHAR(50), customerID INT);
Insert Into table_name Values(20135,'B2021',5521),
(20136,'B2021',NULL),
(20137,'B2022',NULL),
(20138,'B2022',5523),
(20139,'B2022',5523),
(20140,'B2023',NULL);
Records: 6 Duplicates: 0 Warnings: 0
SELECT contractID, customergroup,
CASE WHEN customerID IS NULL THEN
COALESCE((SELECT customerID FROM table_name D
WHERE D.customergroup = T.customergroup AND
D.customerID IS NOT NULL
LIMIT 1), '')
ELSE customerID
END AS customerID
FROM table_name T
ORDER BY contractID
contractID | customergroup | customerID |
---|---|---|
20135 | B2021 | 5521 |
20136 | B2021 | 5521 |
20137 | B2022 | 5523 |
20138 | B2022 | 5523 |
20139 | B2022 | 5523 |
20140 | B2023 |