DECLARE @tv TABLE (
ColumnA char(1),
ColumnB int
)
INSERT INTO @tv
SELECT 'C', 1
UNION ALL
SELECT 'C', 1
UNION ALL
SELECT 'C', 1
UNION ALL
SELECT 'C', 1
UNION ALL
SELECT 'C', 2
UNION ALL
SELECT 'C', 2
UNION ALL
SELECT 'C', 3
UNION ALL
SELECT 'C', 2
UNION ALL
SELECT 'D', 6
UNION ALL
SELECT 'D', 6
UNION ALL
SELECT 'D', 6
UNION ALL
SELECT 'D', 5
UNION ALL
SELECT 'E', 1
UNION ALL
SELECT 'E', 8
UNION ALL
SELECT 'E', 1
UNION ALL
SELECT 'E', 8
/*
The following will also bring back duplicate
ColumnA's i.e. if there are the same number of
ColumnB's per ColumnA - E8 and E1 in the
example data above (2 occurences each).
*/
SELECT t1.ColumnA AS columnA
,t1.ColumnB AS columnB
,t1.myCount AS finalCount
FROM (SELECT COUNT(*) AS myCount,
ColumnA,
ColumnB
FROM @tv
GROUP BY ColumnA,ColumnB ) t1
INNER JOIN
( SELECT MAX( in1Count ) AS myCount
,ColumnA
FROM( SELECT COUNT(*) AS in1Count,
ColumnA,
ColumnB
FROM @tv
GROUP BY ColumnA,ColumnB ) in1
GROUP BY ColumnA ) t2
ON t1.ColumnA = t2.ColumnA
AND t1.myCount = t2.myCount
/*
The following will only bring back unique ColumnA
values.
*/
SELECT t1.ColumnA columnA
,MIN(t1.ColumnB) columnB
,MAX(t1.myCount) finalCount
FROM (SELECT COUNT(*) AS myCount,
ColumnA,
ColumnB
FROM @tv
GROUP BY ColumnA,ColumnB ) t1
INNER JOIN
( SELECT MAX( in1Count ) AS myCount
,ColumnA
FROM( SELECT COUNT(*) AS in1Count,
ColumnA,
ColumnB
FROM @tv
GROUP BY ColumnA,ColumnB ) in1
GROUP BY ColumnA ) t2
ON t1.ColumnA = t2.ColumnA
AND t1.myCount = t2.myCount
GROUP BY t1.ColumnA