try it
DECLARE @t TABLE ( CC BIGINT, Descr NVARCHAR(10), C_NO INT, Vol SMALLINT, WT SMALLINT ) INSERT INTO @t(CC,Descr,C_NO,Vol,WT) VALUES (2050,'Des1',123,20,40) ,(2060,'Des2',123,30,50) ,(2050,'Des1',125,20,40) ,(2060,'Des2',125,30,50) ,(2050,'Des1',126,20,40) ;WITH CTE1 AS( SELECT t1.CC ,t1.Descr ,MergedColumn = STUFF( (SELECT ',' + CAST(C_NO AS VARCHAR(10)) + '/' + CAST(Vol AS VARCHAR(10)) + '/' + CAST(Wt AS VARCHAR(10)) FROM @t AS t2 WHERE t2.CC=t1.CC AND t2.Descr=t2.Descr FOR XML PATH('')),1,1,'') FROM @t t1 GROUP BY t1.CC,t1.Descr) ,CTE2 AS ( SELECT X.CC ,X.Descr ,Y.SplitDataByComma FROM ( SELECT *, CAST('<X>'+REPLACE(F.MergedColumn,',','</X><X>')+'</X>' AS XML) AS xmlfilter FROM CTE1 F )X CROSS APPLY ( SELECT fdata.D.value('.','varchar(50)') AS SplitDataByComma FROM X.xmlfilter.nodes('X') AS fdata(D) )Y ) ,CTE3 AS ( SELECT X.CC ,X.Descr ,Y.SplitDataBySlash , X.SplitDataByComma AS GrpID ,ROW_NUMBER() OVER( PARTITION BY X.SplitDataByComma ORDER BY X.CC,X.Descr ) AS Rn ,X.SplitDataByComma + CAST(CC AS Varchar(200)) + CAST(Descr AS Varchar(200)) CC_Descr FROM ( SELECT *, CAST('<X>'+REPLACE(F.SplitDataByComma,'/','</X><X>')+'</X>' AS XML) AS xmlfilter FROM CTE2 F )X CROSS APPLY ( SELECT fdata.D.value('.','varchar(50)') AS SplitDataBySlash FROM X.xmlfilter.nodes('X') AS fdata(D) )Y ) ,CTE4 AS ( SELECT Rn = ROW_NUMBER() OVER(PARTITION BY CC ORDER BY CC) ,CC ,Descr ,CASE WHEN Rn = 1 THEN CAST (SplitDataBySlash AS VARCHAR(10)) ELSE ' ' END C_NO ,CASE WHEN Rn = 1 THEN ' ' ELSE CAST (SplitDataBySlash AS VARCHAR(10)) END Vol_Wt ,GrpID FROM Cte3 ) ,CTE5 AS( SELECT CC = CASE WHEN Rn > 1 THEN ' ' ELSE CAST(CC AS Varchar(200)) END ,Descr = CASE WHEN Rn > 1 THEN ' ' ELSE CAST(Descr AS Varchar(200)) END ,C_NO ,Vol_Wt ,GrpID FROM Cte4) SELECT CHAR(10) + REPLICATE(SPACE(1),10) + CAST(CC as VARCHAR(100)) + CHAR(10) + REPLICATE(SPACE(1),15) + Descr + CHAR(10) + REPLICATE(SPACE(1),10) + C_NO + CHAR(10) + REPLICATE(SPACE(1),15) + Vol_Wt FROM CTE5
In text mode (CTRL + T), the result
2050 Des1 123 20 40 125 20 40 126 20 40 2060 Des2 123 30 50 125 30 50
And in grid mode (CTRL + D) the result
(No column name) 2050 Des1 123 20 40 125 20 40 126 20 40 2060 Des2 123 30 50 125 30 50
However, SQL Server (or any database) is not a place to format, as others have said. Please study this question.