try something like thisSELECT custcode,custname,billdate,MAX(CASE WHEN Seq=1 THEN brand ELSE NULL END) AS brand,MAX(CASE WHEN Seq=1 THEN item ELSE NULL END) AS item,MAX(CASE WHEN Seq=1 THEN cat ELSE NULL END) AS cat,MAX(CASE WHEN Seq=2 THEN brand ELSE NULL END) AS brand2,MAX(CASE WHEN Seq=2 THEN item ELSE NULL END) AS item2,MAX(CASE WHEN Seq=2 THEN cat ELSE NULL END) AS cat2,MAX(CASE WHEN Seq=3 THEN brand ELSE NULL END) AS brand3,MAX(CASE WHEN Seq=3 THEN item ELSE NULL END) AS item3,MAX(CASE WHEN Seq=3 THEN cat ELSE NULL END) AS cat3FROM(SELECT ROW_NUMBER() OVER (PARTITION BY custcode,custname,billdate ORDER BY PK) AS Seq, *FROM YourTable)tGROUP BY custcode,custname,billdate