CREATE TABLE mytable( CId int, CCId varchar(10), CCount int, totalCount int);GOINSERT MyTable VALUES (1, 'a',3, 6), (1, 'a', 3, 6), (1, 'b', 3, 6), (1, 'c', 3, 6), (2, 'b', 2, 6), (2, 'b', 2, 6), (2, 'a', 2, 6), (2, 'a', 2, 6), (3, 'v', 1, 6);go
SELECT cid, COUNT(DISTINCT ccid) FROM dbo.MyTable GROUP BY cid
;WITH SampleData AS ( SELECT CId = 1, CCId = 'a', CCount = 3, totalCount = 6 UNION ALL SELECT 1, 'a', 3, 6 UNION ALL SELECT 1, 'b', 3, 6 UNION ALL SELECT 1, 'c', 3, 6 UNION ALL SELECT 2, 'b', 2, 6 UNION ALL SELECT 2, 'b', 2, 6 UNION ALL SELECT 2, 'a', 2, 6 UNION ALL SELECT 2, 'a', 2, 6 UNION ALL SELECT 3, 'v', 1, 6) SELECT CId, CCId, CCount, totalCount = SUM([First]) OVER (PARTITION BY (SELECT NULL))FROM ( SELECT *, [First] = CASE WHEN 1 = ROW_NUMBER() OVER(PARTITION BY CId ORDER BY CCId) THEN CCount END FROM SampleData) d