SELECT cast(LEFT(codes,1) as char(7)) as codes, names, SUM(amount) as amount FROM table1 WHERE LEN(codes) = 7 GROUP BY LEFT(Codes,1), Names UNION ALL SELECT cast(LEFT(codes,2) AS CHAR( 7)) as codes, names,SUM(amount) as amount FROM table1 WHERE LEN(codes) = 7 GROUP BY left(Codes,2),Names etc