Full working example:
SET NOCOUNT ON GO DECLARE @SourceTable TABLE ( GroupID INT, LABEL NVARCHAR(20), VALUE NVARCHAR(20), UNIT NVARCHAR (50) ) INSERT INTO @SourceTable (GroupID,LABEL,VALUE,UNIT) VALUES (1,'Name','Henry','') ,(1,'Guest','Manny','Guest') ,(1,'Room','12','') ,(1,'Milk','10','Quart') ,(1,'Eggs','3','dozen') ,(2,'Name','Mark','Supervisor') ,(2,'Water','13','Litre') ,(2,'Milk','3','Gallons') ,(2,'Soap','12','bars') SELECT DISTINCT GroupID ,(SELECT SUBSTRING((SELECT ';' + LABEL +':'+VALUE+' '+UNIT FROM @SourceTable AS B WHERE A.GroupID=B.GroupID FOR XML PATH('')),2,200) AS CSV) FROM @SourceTable AS A SET NOCOUNT OFF GO