Предложения по использованию вещей - хорошее решение. Если ваша версия SQL server 2017 или выше, вы можете использовать гораздо более простой синтаксис функции STRING_AGG.
DECLARE @T Table(
IP VARCHAR(MAX),
WEBSITE VARCHAR(MAX))
INSERT INTO @T
VALUES ('192.168.30.6','website1.domain.com')
, ('192.168.30.6','website2.domain.com')
, ('192.168.30.7','website3.domain.com')
, ('192.168.30.7','website4.domain.com')
, ('192.168.30.7','website5.domain.com')
, ('192.168.30.7','website6.domain.com')
, ('192.168.30.7','website7.domain.com')
, ('192.168.30.8','website8.domain.com')
, ('192.168.30.8','website9.domain.com')
, ('192.168.30.8','website10.domain.com')
, ('192.168.30.8','website11.domain.com')
, ('192.168.30.9','website12.domain.com')
, ('192.168.30.8','website13.domain.com')
, ('192.168.30.8','website14.domain.com')
, ('192.168.30.24','website15.domain.com')
, ('192.168.30.8',' website16.domain.com')
, ('192.168.30.8',' website17.domain.com');
SELECT t.IP, STRING_AGG(WEBSITE, ',') AS Websites
From @T t
GROUP BY t.IP