CREATE TABLE #tbl (ad_id INT, ac_id VARCHAR(255), dt INT, rel INT )
INSERT INTO #tbl VALUES (1,'10',111,1)
INSERT INTO #tbl VALUES (2,'11',112,0)
INSERT INTO #tbl VALUES (3,'12',113,0)
INSERT INTO #tbl VALUES (3,'13',114,1)
INSERT INTO #tbl VALUES (3,'14',115,1)
INSERT INTO #tbl VALUES (4,'15',116,1)
INSERT INTO #tbl VALUES (4,'16',117,1)
INSERT INTO #tbl VALUES (4,'17',118,1)
INSERT INTO #tbl VALUES (4,'18',121,1)
INSERT INTO #tbl VALUES (4,'19',119,1)
INSERT INTO #tbl VALUES (4,'20',120,1)
SELECT * , dt1 = MIN(dt)
INTO #tbl2
FROM #tbl
WHERE rel = 1
GROUP BY ad_id
HAVING rel = 1
ORDER BY ad_id, dt
DECLARE @LastDesc VARCHAR(512)
SELECT @LastDesc = ''
UPDATE #tbl2
SET @LastDesc = CASE WHEN dt = dt1
THEN ac_id
ELSE @LastDesc +','+ac_id END,
ac_id = CASE WHEN dt = dt1 THEN ac_id
ELSE @LastDesc +','+ac_id END
SELECT *
FROM #tbl2
GROUP BY ad_id HAVING dt = max(dt)