Я немного смущен тем, как вы хотите рассчитать C4count. Используя эти данные (спасибо @ iSR5):
CREATE TABLE #Table
(
Column1 VARCHAR(50)
, Column2 VARCHAR(50)
, Column3 VARCHAR(50)
, Column4 INT
, Column5 VARCHAR(50)
)
INSERT INTO #Table VALUES
('AAA','000000','BG1',12345,'North'),
('AAA','111111','BG2',23456,'South'),
('BBB','000000','BG3',12346,'EAST'),
('AAA','000000','BG2',12345,'West')
Вы можете использовать довольно простое утверждение для достижения желаемых результатов:
SELECT Column1 AS [Name]
,COUNT(DISTINCT t.Column2) AS C2Count
,COUNT(DISTINCT t.Column3) AS C3Count
,COUNT(t.Column4) AS C4Count
FROM #Table t
GROUP BY t.Column1
Результаты:
Name C2Count C3Count C4Count
AAA 2 2 3
BBB 1 1 1
[116 ] Это будет подсчитывать, сколько разных совпадений в каждом столбце для AAA и BBB для столбца 2 и столбца 3, и подсчитывать общие совпадения для столбца 4. Ваши желаемые результаты ничего не показывают для столбца 5.
Если вам нужен какой-то другой вид расчета, не могли бы вы четко описать то, что вы ищете, чтобы я мог скорректировать свой код, чтобы показать, что именно вы ищете.